Подтвердить что ты не робот

Можно ли использовать множественное наследование с абстрактными моделями Django?

У меня есть три разных базовых класса абстрактных моделей., Я хотел бы использовать их в нескольких наследованиях, вроде как Mixins. Любые проблемы с этим?

например.

class TaggableBase(models.Model):

. . .

    class Meta:
        abstract = True

class TimeStampedBase(models.Model):

. . .

    class Meta:
        abstract = True

class OrganizationalBase(models.Model):

. . .

    class Meta:
        abstract = True

class MyTimeStampedTaggableOrganizationalModel(OrganizationalBase, TimeStampedBase, TaggableBase):

. . . 
4b9b3361

Ответ 1

Похоже на то, что вы пытаетесь сделать, миксины действительно подходят лучше всего. Простой поиск в Google найдет множество статей по реализации миксинов в Python, таких как эта. Я не уверен, что множественное наследование - это лучший способ сделать это, поэтому вы можете изучить все другие варианты. О чем ты еще думал?

Ответ 2

Я делаю это все время с помощью классов и классов моделей. Это одна из лучших вещей на Python, на мой взгляд.

Ответ 3

Если вы используете любые поля вообще в своем классе, наследуйте от models.Model.

В противном случае Django будет игнорировать эти поля (атрибуты все равно будут присутствовать в Python, но в базе данных не будут созданы поля). Установите abstract = True, чтобы получить поведение "mixin" (т.е. Для миксинов не создаются таблицы БД, а для моделей с использованием этих миксинов).

Если вы не используете какие-либо поля, вы можете просто наследовать от object, чтобы все было просто и просто.