【发布时间】:2018-09-10 08:55:09
【问题描述】:
我确信可能有几种方法可以实现我正在实现的目标,但遇到了一些问题。我有一个“成员”模型,并且我还尝试添加一个“从属”模型,该模型从父(成员)继承一些字段和数据,但也有一些相同的字段,但它们自己的数据。实现这一目标的最佳方法是什么? 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)
感谢您的帮助。
【问题讨论】:
-
这里的
is_dependent标志不应该是最佳选择吗?所以BooleanField表示它是否是依赖项。此外,1-1、m2m 和ForeignKey具有不同的量词,因此这不是“设计”问题,而是根本的建模差异。 -
ForeignKey 似乎是最好的主意,因为继承在这里没有多大意义,而且这可能不是一对一关系或多对多关系。
-
另一方面,如果
Member可以有零个、一个或多个Dependents,则ForeignKey将模拟多对一关系。您还可以使用包含共享字段的 abstract 模型。 -
但以上内容不清楚,所以我认为您应该提供更多信息:
Dependent与Member有什么关系?一个成员可以有零个、一个或多个Dependents?Dependent可以有零个、一个或多个Members 吗? 是DependentMember吗? -
你真的应该让
Member和Dependant之间的语义关系更清晰,正如@WillemVanOnsem 所要求的那样。否则无法正确回答此问题。