Django - 在管理界面通过用户资料字段排序

3 投票
2 回答
534 浏览
提问于 2025-04-16 09:15

我找到了方法,可以让用户资料的信息在我的管理界面中显示,这多亏了大家的帮助。现在我想想办法,正确地对这些字段进行排序。我离目标不远了。

class EmployerProfileAdmin(UserAdmin):
    inlines = [EmployerProfileInline, ]
    def company(self):
        return self.get_profile().company
    company.admin_order_field = 'employerprofile'
    list_display = ('username','first_name','last_name',company,'email','password',)

这个方法让我可以根据我的用户资料中的公司字段(EmployerProfile)进行排序,但我必须根据用户中的一个字段来排序。用户有一个叫'employerprofile'的字段,但那是一个完整的对象。Django是怎么知道如何根据那个字段进行排序的呢?我可以在EmployerProfile类中覆盖这个设置吗?

谢谢大家!

2 个回答

1

也许你可以试试使用 model__field 这种方法?其他人说我们并不知道整个问题的情况,但

class Meta:
    ordering = [ "user__fieldname" ]

这可能有效(没有测试过)。前提是你有一个“用户”字段,它是一个外键,并且在外部模型中存在这个字段名。

所以可以像这样:

class User( object ):
    fieldname = models.CharField( max_length = 255 )

class Profile( object )
     class Meta:
         ordering = [ "user__fieldname" ]
     user = models.ForeignKey( User )
1

正如Honza所说,你想要按什么顺序排列呢?

一般来说,在管理后台的变更列表页面,显示的顺序会按照模型默认的顺序来排列,或者你可以通过ModelAdmin.ordering来指定一个顺序,这个顺序可以用列表或元组的形式来表示。

撰写回答