Как исправить конфликты полей при использовании моделей множественного наследования в Django - PullRequest
1 голос
/ 07 октября 2019

Допустим, у нас есть родительская абстрактная модель AModel, которая определяет поле foo:

class AModel(models.Model):

    class Meta:
        abstract = True

    foo = models.TextField(max_length=500, db_index=True)

И у нас есть два класса абстрактных моделей BModel и CModel, которые наследуются от AModel:

class BModel(AModel):

    class Meta:
        abstract = True


class CModel(AModel):

    class Meta:
        abstract = True

И у нас есть класс модели DModel, который наследуется от BModel и CModel:

class DModel(BModel, CModel):

Проблема в том, что поле foo будетконфликтует с самим собой, потому что он определен в двух родительских модельных классах.

Как решить эту проблему? Есть ли способ «Django», чтобы предотвратить такое поведение?

1 Ответ

1 голос
/ 07 октября 2019

Я думаю, что это невозможно. Вам нужно будет изменить иерархию моделей.

Использование Python's inheritance + models.Model также не работает. например, выполнение class AModel:, class BModel(AModel):, class CModel(AModel):, а затем class DModel(BModel, CModel, models.Model): не будет работать.

Чтение абстрактных моделей Джанго против обычного наследования .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...