假设有一个抽象模型CarOwner:一个人或企业可以成为CarOwner。此外,具有特定VIN的汽车可以属于(关联)个人或企业中的任何一个,但不能同时属于两者(互斥情况)。在以下代码的最后,我提出了两种可能性(请参见代码中的注释“#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)