Как связать строки из одной таблицы со строками другой таблицы в Django? - PullRequest
1 голос
/ 20 октября 2019

У меня есть четыре таблицы:

class Instrument(models.Model):
    name = models.CharField(max_length=100, null=True, blank=True)
    instrumentation = models.ManyToManyField(Instrumentation, verbose_name=_('instrumentation'), related_name='instrument', blank=True)

class Instrumentation(models.Model):
    name = models.CharField(max_length=100, null=True, blank=True)

Записи в таблице:

row 1: name = violin, instrumentation = piano trio
row 2: name = piano, instrumentation = piano trio
row 3: name = cello, instrumentation = piano trio

Вот две другие таблицы:

class Ensemble(models.Model):
    name = models.CharField(max_length=200, null=True, blank=True)

class EnsembleMember(models.Model):
    ensemble = models.ForeignKey(Ensemble, verbose_name=_('ensemble'), related_name='ensemble_member', on_delete=models.PROTECT)
    member = models.ForeignKey(Person, verbose_name=_('member'), null=True, blank=True, on_delete=models.PROTECT)

row 1: name = person 1 (violinist), ensemble = Beau Arts Trio
row 2: name = person 2 (pianist), ensemble = Beau Arts Trio
row 3: name = person 3 (cellist), ensemble = Beau Arts Trio

Каксвязать инструмент с EnsembleMember? ForeignKey или ManyToManyField?

Инструмент для сопоставления множеству различных членов ансамбля.

row 1 in Instrument to row 1 in Ensemble Member
row 2 in Instrument to row 2 in Ensemble Member
row 3 in Instrument to row 3 in Ensemble Member

И варианты выпадающего меню в admin.py

...