У меня есть ManyToManyField в Django, и я хочу сохранить дополнительную информацию для отношения.То, что я делаю, это
class Speaker(models.Model):
name = models.CharField(max_length=50)
title = models.CharField(max_length=100, blank=True)
description = models.TextField(blank=True)
class Event(models.Model):
title = models.CharField(max_length=120)
speakers = models.ManyToManyField(Speaker, blank=True, null=True, through='Role')
class Role(models.Model):
speaker = models.ForeignKey(Speaker)
event = models.ForeignKey(Event)
role = models.CharField(max_length=50, blank=True)
Согласно документации , это мешает Django выполнять некоторые автоматические действия.Что особенно раздражает, так это то, что он делает список Спикеров недоступным при создании события в администраторе.
Я понимаю, что в общем случае Django не знает, что поместить в поле Role.role
.Но это необязательно (blank=True
).Я ожидаю, что
- либо Django распознает, что Role имеет только необязательные поля, и позволяет мне использовать отношение многие ко многим как обычно (создание полей с пустым значением по умолчанию), либо
- Администратор Django позволяет мне добавлять Speakers во вновь созданное событие, и для каждого такого Speaker он запрашивает дополнительную информацию (значение
Role.role
).
Вторая возможность была бы более полезной и более полезной.Вообщем чем первый.Тем не менее администратор Django не выполняет ни одного из этих двух действий: вместо этого поле «Динамики» удаляется из события.
Есть ли способ заставить администратора Django вести себя так, как описано выше?