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

时间:2013-11-03 00:33:51

标签: python django

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

0 个答案:

没有答案