【发布时间】:2014-01-22 11:34:26
【问题描述】:
假设有一个抽象模型 CarOwner:而 Person 或 Business 可以是 CarOwner。此外,具有特定 VIN 的汽车可以属于(相关)个人或企业,但不能同时属于(相互排斥的情况)。在以下代码的最后,我提出了两种可能性(参见代码中的 cmets “#1. 我应该有这个???”和“#2. ...或者我应该有这个???”)。在第一种可能性中,与抽象模型建立了多对一关系,我不确定这是否是正确的方法。在第二种情况下,建立了两个关系,我也不确定这是否正确,尤其是不清楚如何使它们相互排斥。那么哪一个是正确的,如果两者都不是,请尽可能提供正确的答案。谢谢。
class CarOwner(models.Model):
location = models.CharField(max_length=50, blank=True)
class Meta:
abstract = True
class Person(CarOwner):
name = models.CharField(max_length=50, blank=True)
class Business(CarOwner):
business_id = models.CharField(max_length=50, blank=True)
class Car(models.Model):
vin = models.CharField(max_length=50, blank=True)
# 1. SHOULD I HAVE THIS??? (CarOwner is abstract)
carowner = models.ForeignKey(CarOwner, blank=True, null=True)
# 2. ...OR SHOULD I HAVE THIS???
person = models.ForeignKey(Person, blank=True, null=True)
business = models.ForeignKey(Business, blank=True, null=True)
【问题讨论】:
标签: django django-models foreign-key-relationship many-to-one django-orm