如果一个应用程序有多个具有相同字段的模型,那么保持 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…

您可以定义多个这样的抽象基础 类,并使用多重继承,以便模型继承多个这样的 类。