这是我的模型关系(从 Django 2.1 官方文档复制 - 我的模型是这个的精确副本,但只有模型名称不同。):
class Person(models.Model):
name = models.CharField(max_length=50)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(
Person,
through='Membership',
through_fields=('group', 'person'),
)
class Membership(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
这是我的 admin.py:
class MembershipInLine(admin.StackedInline):
model = Membership
class PersonAdmin(admin.ModelAdmin):
inlines = [
MembershipInLine,
]
我在我的个人页面上得到这样的字段: 当前视图
但相反,我希望有这种风格的观点: 期望的观点
我在官方文档filter_horizontal
中找到了,但我不知道如何将它们与内联一起使用。我怎样才能做到这一点?filter_vertical
编辑:
我已经按照文档中的描述进行了尝试:
class MembershipInLine(admin.StackedInline):
model = Membership # (and also tried with = Group.members.through)
filter_horizontal = ('group', )
但它抛出:
(admin.E020) 'filter_horizontal[0]' 的值必须是多对多字段。