如何在 Django Admin 中启用外字段的列排序



以下是我的模型:

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_onea_twob_onec_onec_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'

相关内容

  • 没有找到相关文章

最新更新