2017-02-23 18 views
1

ユーザ名でユーザリ​​ストを注文したい。これは動作していません。ユーザ名で管理者リストを注文する

登録メソッドを削除するとエラーが発生するため、コードが実行されています。私は別の管理者を持っているので、私はこれを行う必要があり :ここ

list_filter = [ 
     'user', 
     'content_type', 
     'action_flag' 
    ] 

とユーザー名が注文されていないので、ユーザーを検索し、ほぼIMPOSIBLEです。

私は1.8

マイModelAdminのですジャンゴを使用してい

:あなたはの値に基づいてモデルを注文したい場合は

date_hierarchy = 'action_time' 
search_fields = ['user__username'] 
readonly_fields = LogEntry._meta.get_all_field_names() 
readonly_fields = [x for x in readonly_fields if x[-3:] == '_id' and x[:-3] not in readonly_fields] 

list_filter = [ 
    'user', 
    'content_type', 
    'action_flag' 
] 


search_fields = [ 
    'object_repr', 
    'change_message' 
] 


list_display = [ 
    'action_time', 
    'user', 
    'content_type', 
    'object_link', 
    'action_flag', 
    'change_message', 
] 

def has_add_permission(self, request): 
    return False 

def has_change_permission(self, request, obj=None): 
    return request.user.is_superuser and request.method != 'POST' 

def has_delete_permission(self, request, obj=None): 
    return False 

def object_link(self, obj): 
    if obj.action_flag == DELETION: 
     link = escape(obj.object_repr) + u' (%s)' % obj.object_id 
    else: 
     ct = obj.content_type 
     link = u'<a href="%s">%s</a>' % (
      reverse('admin:%s_%s_change' % (ct.app_label, ct.model), args=[obj.object_id]), 
      escape(obj.object_repr), 
     ) 
    return link 
object_link.allow_tags = True 
object_link.admin_order_field = 'object_repr' 
object_link.short_description = u'object' 
+0

は、あなたがエラーを表示することができますか? 1つはありますか?または、おそらくデータがテストに使用されていますか? –

+0

検索の便宜のために注文しているのであれば、代わりに 'search_fields'を使わないのはなぜですか? –

+0

ユーザーのユーザー名に基づいて管理者のモデルをフィルタリングしようとしていますか?あなたが共有したコードでは、作成したモデルではなく、Userモデルの順序が設定されます(管理クラスはモデルごとに別々ですが、順序はそれらの間では異なります) –

答えて

1

クラスLogEntryAdmin(admin.ModelAdmin)そのモデルにはModelAdminを介して行います。モデルには順序付けがすべて3つの関係がある場合、どのようにそのオブジェクトを注文しますか?)あなたの場合は、usernameで注文したい場合でも、で注文することです。UserAdminではありません。

class LogEntryAdmin(admin.ModelAdmin): 

    # Like elsewhere in Django, we use __ to traverse relationships 
    ordering = ['user__username'] 
    date_hierarchy = 'action_time' 
    search_fields = ['user__username'] 
    readonly_fields = LogEntry._meta.get_all_field_names() 
    readonly_fields = [x for x in readonly_fields if x[-3:] == '_id' and x[:-3] not in readonly_fields] 

は、これは(The default ordering on User for adminがとにかくユーザ名である)あなたはもはや、次の必要はありません意味:

from django.contrib.auth.models import User 
class UserAdmin(admin.ModelAdmin): 
    ordering = ['username'] 
admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 
関連する問題