1

在 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 仅将另一个数据库表(实际上是一个视图)用于列表操作?

4

0 回答 0