在Django中:用于列出项目的特定数据库表

2024-09-28 05:19:33 发布

您现在位置:Python中文网/ 问答频道 /正文

在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在admin中被调用时,已经对数据库进行了调用(根据我通过检查传递给它的参数可以看出的情况):

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在哪里使用另一个数据库表(实际上是一个视图)来进行列表操作呢?你知道吗


Tags: djangonameself视图数据库objreturnemail

热门问题