【发布时间】:2019-11-18 11:35:06
【问题描述】:
我正在尝试创建一对一的引用,并希望确保该引用不允许用于另一个模型或实例。
例如
假设我有一个地址模型、个人模型和公司模型
Person 有一个 OneToOneField 字段到地址 公司还有一个 OneToOneField 字段用于地址
address=Address(data="some address")
company=Company(name="some company",address=address)
person=Person(name="my name",address=address)
型号:
class Address(models.Model):
data = models.CharField(max_length=255, blank=True, null=True)
class Company(models.Model):
name = models.CharField(max_length=255, blank=True, null=True)
address=models.OneToOneField(Address,on_delete=models.CASCADE)
class Person(models.Model):
name = models.CharField(max_length=255, blank=True, null=True)
address=models.OneToOneField(Address,on_delete=models.CASCADE)
我希望系统对此抛出错误,因为我为 2 个不同的模型设置了相同的地址。
如果我删除地址,这也会删除个人和公司。
通常你可以用代码捕捉到这一点,而不会犯这样的愚蠢错误。 但是由于是一对一的,系统能抓到吗?
【问题讨论】: