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 параметр, который следует за именем дочернего класса класса?

Вернуться на верх