Django,如何在没有 M2M 的模型中有一个数组?
Django, how to have an array in model without M2M?
我希望我的模型有一组其他模型的实例。让我解释一下。
我有一个 Company
模型,它有一个 localizations
字段,它应该是一个 set/array 地址。由于一个地址只能用于一个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
个实例也会被删除。
我希望我的模型有一组其他模型的实例。让我解释一下。
我有一个 Company
模型,它有一个 localizations
字段,它应该是一个 set/array 地址。由于一个地址只能用于一个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
个实例也会被删除。