以下是我的模型:
class A(models.Model):
a_one = models.CharField()
a_two = model.ForeignKey(B)
class B(models.Model):
b_one = models.Charfield()
b_two = models.ForeignKey(C)
class C(models.Model):
c_one = models.CharField()
c_two = models.CharField()
我想在 django admin 中为模型 A 创建一个表,其中包含a_one
、a_two
、b_one
、c_one
和c_two
列,其中所有这些都是可排序的。我怎样才能做到这一点?
Django 对定义admin_order_field
属性的每个字段启用列排序,相关字段不定义它,但你可以自己创建一个返回相关字段的方法并在其上设置admin_order_field
属性来实现它。
像下面这样的东西应该可以解决问题:
class AAdmin(admin.ModelAdmin):
list_display = ('a_one', 'b_one', 'c_one', 'c_two')
def b_one(self, obj):
return obj.a_two.b_one
b_one.admin_order_field = 'a_two__b_one'
def c_one(self, obj):
return obj.a_two.b_two.c_one
c_one.admin_order_field = 'a_two__b_two__c_one'
def c_two(self, obj):
return obj.a_two.b_two.c_two
c_two.admin_order_field = 'a_two__b_two__c_two'