Generic ManyToMany для нескольких унаследованных моделей
Во-первых, следующий код не является примером лучшей практики в моделировании БД и я это знаю, к сожалению, это уже сделано и это то, что есть. Переделывать все - просто не вариант.
У меня есть следующие модели:
models.py
class OtherModel(models.Model):
...
class AbstractSite(models.Model):
class Meta:
abstract = True
class Site(AbstractSite):
...
class Banner(Site):
data = models.ManyToManyField(OtherModel, blank=True)
Проблема в том, что этот many-to-many должен присутствовать как в модели сайта, так и в модели баннера.
Я попытался указать его в Abstract Model, и он создал таблицу site_data, но данные, сохраненные в модели Banner, также заполняли эту таблицу, а не заполняли banner_data, как я ожидал.
Самый простой способ - создать новое поле в модели Site, названное иначе, чем поле данных в модели Banner, но это не кажется правильным, поскольку для любой новой дочерней модели потребуется объявление новой таблицы. Я ожидал найти способ динамического выделения этого поля в БД.
Есть ли способ создать динамический through параметр, который следует за именем дочернего класса класса?