[英]Can I change the display order of readonly_fields that use the @admin.display decorator in Django Admin?
好的,这就是我的问题。 我会尽量不绕房子太多。
我有一个 django 模型,我想用管理界面公开它。 它是用户模型的外键。 类似的东西(注意其他字段的顺序):
class SomeModel(models.Model):
user = models.ForeignKey(...)
other_field2 = models.IntegerField(...)
other_field1 = models.IntegerField(...)
other_field3 = models.IntegerField(...)
...
我还有一个该模型的管理界面,如下所示:
class SomeModelAdmin(admin.ModelAdmin):
@admin.display(description="User id")
def get_user_id(self, obj):
return obj.user.id
list_display = (
"get_user_id",
"other_field1",
"other_field2",
"other_field3",
)
readonly_fields = (
"get_user_id",
"other_field1",
"other_field2",
)
据我从文档中看到的,我只能将@admin.display
装饰器用于list_display
和read_only_fields
。 但是,如果我想更改字段的显示顺序怎么办? 在上面的代码中,它们将默认为模型中定义的顺序(首先是只读用户 id,然后是 other_field2 和 other_field1,最后是可编辑的 other_field3)。
我希望我可以通过定义fields
元组或覆盖get_fields
方法来做到这一点,但这不适用于使用@admin.display
的字段。 有任何想法吗?
啊我是盲人,这是在文档https://docs.djangoproject.com/en/4.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.fields中。 您可以通过定义 readonly_fields 的元组(包括 admin.display 方法)然后在字段元组中使用那些只读字段来完成此操作。 例如:
readonly_fields = (
"get_user_id",
"other_field1",
"other_field2",
)
fields = (
"get_user_id",
"other_field1",
"other_field2",
"other_field3",
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.