如果一个应用程序有多个具有相同字段的模型,那么保持 DRY 的最佳实践是什么?
If an app has multiple models with the same field, whats the best practice for keeping things 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
还是有办法只输入一次?
是的,你可以定义一个abstract base class [Django-doc]:
class LeadId(models.Model):
lead_id = models.BigIntegerField("Lead ID")
class Meta:
<strong>abstract = True</strong>
然后在其他模型中继承:
class CallLog(<strong>LeadId</strong>, models.Model):
# other fields…
class EmailLog(<strong>LeadId</strong>, models.Model):
# other fields…
class TextLog(<strong>LeadId</strong>, models.Model):
# other fields…
您可以定义多个这样的抽象基础 类,并使用多重继承,以便模型继承多个这样的 类。
例如,如果我有 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
还是有办法只输入一次?
是的,你可以定义一个abstract base class [Django-doc]:
class LeadId(models.Model):
lead_id = models.BigIntegerField("Lead ID")
class Meta:
<strong>abstract = True</strong>
然后在其他模型中继承:
class CallLog(<strong>LeadId</strong>, models.Model):
# other fields…
class EmailLog(<strong>LeadId</strong>, models.Model):
# other fields…
class TextLog(<strong>LeadId</strong>, models.Model):
# other fields…
您可以定义多个这样的抽象基础 类,并使用多重继承,以便模型继承多个这样的 类。