【发布时间】:2017-07-14 13:31:59
【问题描述】:
我想按用户名排序用户列表。这不起作用。
from django.contrib.auth.models import User
class UserAdmin(admin.ModelAdmin):
ordering = ['username']
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
代码正在执行,因为如果我删除 register 方法,它会引发错误。 我需要这样做,因为我有另一个管理员:
list_filter = [
'user',
'content_type',
'action_flag'
]
这里的用户名没有被排序,所以搜索用户几乎是不可能的。
我正在使用 django 1.8
我的 ModelAdmin 是:
类 LogEntryAdmin(admin.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'
【问题讨论】:
-
你能显示错误吗?有吗?或者可能是用于测试的数据?
-
如果您是为了方便搜索而订购,为什么不使用
search_fields代替? -
您是否尝试根据用户的用户名过滤管理员中的模型?您在共享的代码中所做的是设置 User 模型的顺序 - 而不是您创建的模型(管理类对于每个模型都是独立的,它们之间不会进行排序)
-
是的,它适用于 LogEntry 模型。我希望 list_filter 用户字段按用户名排序。
-
你能分享一下你的
ModelAdmin吗?
标签: django django-admin