class MyUserAdmin(UserAdmin):
list_display = UserAdmin.list_display + ('get_company',)
list_filter = UserAdmin.list_filter + ('get_company',)
inlines = [CompanyInline,]
def get_company(self, obj):
assignment = UserCompanyAssignment.objects.get(user__exact=obj.id)
return assignment.company.name
get_company.short_description = 'Company'
list_filter不适用于'get_company'。它说
'MyUserAdmin.list_filter[3]' refers to field 'Company' that is missing from model 'User'.
有什么建议吗?
答案 0 :(得分:4)
list_filter
必须指向模型字段,而不是方法。您可以将其指向foreign keys,但为了您的情况,您必须更改用户模型,我认为您没有发布它。
我猜测异常消息是指“公司”字段,因为您将short_description
设置为“公司”。有点误导,也许Django的变化是合适的。
要进行自定义过滤,您可以编写自己的FilterSpec
,但它还不是官方API。
list_display
可能包含方法,如果您想对它们进行排序,可以通过设置admin_order_field
属性告诉管理员使用特定字段,如下所示:
def get_company(self, obj):
# ...
get_company.admin_order_field = 'somefield'