Скажем, у меня есть эти модели и поля:
class User(AbstractBaseUser):
name_title
name_first
name_middle_initial
name_last
address_1
address_2
address_city
address_state
address_post_code
class Order(models.Model):
name_title
name_first
name_middle_initial
name_last
address_1
address_2
address_city
address_state
address_post_code
class Shipment(models.Model):
address_1
address_2
address_city
address_state
address_post_code
Скажем также, что ни одна из этих моделей не обязательно связана - заказ не должен принадлежать пользователю, отгрузкене должен принадлежать к Ордену и т. д.
Я хочу, чтобы все повторяющиеся поля были идентичны - иметь одинаковое verbose_name, валидации, max_length и т. д.
I 'мы пытались использовать смешанный подход:
class AddressFieldsMixin(models.Model):
address_1
address_2
address_city
address_state
address_post_code
class NameFieldsMixin(models.Model):
name_title
name_first
name_middle_initial
name_last
class User(AbstractBaseUser, AddressFieldsMixin, NameFieldsMixin):
pass
class Order(models.Model, AddressFieldsMixin, NameFieldsMixin):
pass
class Shipment(models.Model, AddressFieldsMixin):
pass
... но это приводит к коллизиям модели / наследования, если мои Mixin
классы наследуются от models.Model
, и ошибкам "неизвестного поля", если они этого не делают.
Как правильно использовать поля «имя» и «адрес» в нескольких моделях? Спасибо!