【发布时间】:2012-02-11 01:26:48
【问题描述】:
人员和地址也是如此。一个人可能有多个地址,但每个人只能将一个地址标记为主要地址。以下是我考虑过的两种方法。
第一个在保存时很尴尬,因为我必须先保存人,然后是变体,然后再用变体 pk 保存人。
对于第二种方法,防止一个人拥有多个主要地址的唯一方法似乎是在代码中添加验证。
# First approach
class Person(models.Model):
primary_address = models.ForeignKey('Address')
...
class Address(models.Model):
person = models.ForeignKey(Person)
...
# Second approach
class Person(models.Model):
...
class Address(models.Model):
person = models.ForeignKey(Person)
is_primary = models.BooleanField()
...
【问题讨论】:
-
只是为了使事情复杂化,一个地址是否可能是一个人的主要地址而不是另一个人的主要地址?如果是这样,变体 2 将不起作用。
-
不确定我是否理解您的问题。地址不会在人与人之间共享。
-
好的,但是很可能想象一个地址可以共享的情况。例如。兄弟姐妹上同一所学校。这就是我提出它的原因。
-
是的,这是要考虑的事情。
标签: django one-to-many modeling one-to-one