Django - 在管理界面通过用户资料字段排序
我找到了方法,可以让用户资料的信息在我的管理界面中显示,这多亏了大家的帮助。现在我想想办法,正确地对这些字段进行排序。我离目标不远了。
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来指定一个顺序,这个顺序可以用列表或元组的形式来表示。