У меня есть модель оперы:
class Opera(MPTTModel):
name = models.CharField(max_length=8000, null=True, blank=True)
librettist = models.ForeignKey(Person, verbose_name=_('librettist'), null=True, blank=True, related_name='person', on_delete=models.PROTECT)
Структура Оперы - это древовидная структура:
Opera (Top level)
|--> Overture
|--> Aria #1
|--> Aria #2
В каждой опере или арии есть набор символов:
class Cast(models.Model):
character_name = models.CharField(max_length=100, null=True, blank=True)
voice_type = models.ForeignKey(Instrument, null=True, blank=True, on_delete=models.CASCADE)
Существует также таблица сопоставления для сопоставления модели Cast с оперой:
class WorkCast(models.Model):
opera = models.ForeignKey(Opera, verbose_name=_('opera'), related_name='workcast', null=True, blank=True, on_delete=models.PROTECT)
cast = models.ForeignKey(Cast, verbose_name=_('cast'), related_name='workcast', null=True, blank=True, on_delete=models.PROTECT)
Опера (верхний уровень) имеет весь состав, сопоставленный с ней. Aria # 1 или Aria # 2 будут иметь подмножество карт преобразования.
Когда я нахожусь в меню администратора, я хочу иметь возможность выбрать модель оперы и связать с ней несколько членов актерского состава. Означает ли это, что модели WorkCast необходимо иметь поле «многие ко многим» для преобразования или внешний ключ для преобразования? Кажется, что я должен принудительно установить отношение «многие ко многим», чтобы использовать встроенную функцию в admin.py?
.