在 Django 中,我想要在列表视图中使用的大多数字段都是通过外键链接的:
class MyUserAdmin(admin.ModelAdmin):
list_display = ('first_name', 'last_name', 'email', )
def first_name(self, obj):
return obj.dragonuser.first_name
def last_name(self, obj):
return obj.dragonuser.last_name
def email(self, obj):
return obj.dragonuser.email
first_name.short_description = 'First name'
last_name.short_description = 'Last name'
email.short_description = 'Email address'
这是可行的,但因为 Django 从未从数据库中获取任何这些字段,它无法对它们进行排序或使用它们进行过滤。那很糟。所以我直接查看了数据库。我不想用它来创建或编辑实例。我有自定义表格。我想使用该自定义表仅列出元素。但我不确定在哪里添加该代码。在管理员定义中?在经理?别处?
我可以在管理器中创建一个自定义方法,但我如何告诉管理视图调用该特定函数?
在管理员中调用该方法时changelist_view
,已经调用了数据库(根据我通过检查传递给它的参数可以判断的内容):
def changelist_view(self, request, extra_context=None):
from pprint import pprint
pprint(dir(request))
return super(BaseUserAdmin, self).changelist_view(request, extra_context)
那么我应该在哪里告诉 Django 仅将另一个数据库表(实际上是一个视图)用于列表操作?