Можно ли использовать множественное наследование с абстрактными моделями 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):
. . .
Ответы
Ответ 1
Похоже на то, что вы пытаетесь сделать, миксины действительно подходят лучше всего. Простой поиск в Google найдет множество статей по реализации миксинов в Python, таких как эта. Я не уверен, что множественное наследование - это лучший способ сделать это, поэтому вы можете изучить все другие варианты. О чем ты еще думал?
Ответ 2
Я делаю это все время с помощью классов и классов моделей. Это одна из лучших вещей на Python, на мой взгляд.
Ответ 3
Если вы используете любые поля вообще в своем классе, наследуйте от models.Model
.
В противном случае Django будет игнорировать эти поля (атрибуты все равно будут присутствовать в Python, но в базе данных не будут созданы поля). Установите abstract = True
, чтобы получить поведение "mixin" (т.е. Для миксинов не создаются таблицы БД, а для моделей с использованием этих миксинов).
Если вы не используете какие-либо поля, вы можете просто наследовать от object
, чтобы все было просто и просто.