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个实例也会被删除。