是模型继承还是外键?

时间:2018-09-10 08:55:09

标签: python django model

我确定可能有几种方法可以实现自己所要达到的目标,但是遇到了一些问题。我有一个“成员”模型,并且我也试图添加一个“从属”模型,该模型从父级(成员)继承一些字段和数据,但也有一些相同的字段,但是它们都有自己的数据。实现这一目标的最佳方法是什么? ForeignKey,OneToOne或ManyToMany,还是有可能?

示例:

class Member(models.Model):
    name = models.CharField(max_length=128)
    address = models.CharField(max_length=128)
    age = models.DateField()

class Dependent(models.Model):
    name = models.CharField(max_length=128) (different name)
    address = models.CharField(max_length=128) (same address as Member)
    age = models.DateField() (different age)

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

由于DependentMember具有相同的字段,但具有一些额外的字段,因此您可以使DependentMember都继承abstract base class(感谢@WillemVanOnsem指出来)以避免重新定义相同的字段,并且由于MemberDependent具有父子关系,因此应在Member上添加外键作为附加字段在Dependent模型中。您还可以覆盖save的{​​{1}}方法,以使其在保存时同步其Member子代的地址。

Dependent