Вот мое отношение к модели (скопировано из официальной документации 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,
]
Я получаю поле на своей странице Person следующим образом: Текущий вид
Но вместо этого я хотел бы иметь такой стиль просмотра: Желаемый вид
Я нашел 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]' должно быть полем "многие ко многим".