Если приложение имеет несколько моделей с одним и тем же полем, какова наилучшая практика для сохранения DRY?
Например, если у меня есть 3 модели, которые выглядят следующим образом:
class CallLog(models.Model):
lead_id = models.BigIntegerField("Lead ID")
# other fields
class EmailLog(models.Model):
lead_id = models.BigIntegerField("Lead ID")
# other fields
class TextLog(models.Model):
lead_id = models.BigIntegerField("Lead ID")
# other fields
Нужно ли добавлять lead_id
к каждой модели отдельно или есть способ ввести его только один раз?
Да, вы можете определить абстрактный базовый класс [Django-doc]:
class LeadId(models.Model):
lead_id = models.BigIntegerField("Lead ID")
class Meta:
abstract = True
и затем наследовать это в других моделях:
class CallLog(LeadId, models.Model):
# other fields…
class EmailLog(LeadId, models.Model):
# other fields…
class TextLog(LeadId, models.Model):
# other fields…
Вы можете определить несколько таких абстрактных базовых классов и использовать множественное наследование, чтобы модели наследовались от нескольких таких классов.