问题描述
我希望我的模型具有其他模型实例的数组。让我解释一下。
我有一个Company
模型,该模型具有一个localizations
字段,该字段应该是地址集/地址数组。由于一个地址只能用于一个Company
,因此M2M关系在这里似乎是错误的。
删除Company
时,其所有localizations
也应删除。
我该怎么做? (我不使用Postgres)
解决方法
在这种情况下,您需要一个ForeignKey
(多对一关系)。请参见下面的代码:
class Company(models.Model):
...
class Address(models.Model):
company = models.ForeignKey(Comapny,on_delete=models.CASCADE,related_name="localizations")
address_line_1 = models.CharField(max_length=255,blank=False)
# Other fields you want
...
每个Address
指向一个Company
实例。但是,有多少Address
可以指向一个Company
没有限制。从这个意义上讲,公司“拥有”许多地址。
related_name="localizations"
参数意味着您可以执行company.localizations
来获取指向该公司的Address
实例的数组。
最后,on_delete=models.CASCADE
意味着,如果删除Company
实例,则指向该实例的Address
实例也将被删除。