我刚刚从另一个开发人员那里接手了一个 Django 项目,并试图了解他做了什么。
如果有人可以让我知道我是否理解正确并指出正确的方向,那就太好了。
目前模型看起来像这样(简化):
class Address:
street_name=models.CharField()
class Provider:
address=models.OneToOneField(Address)
class User:
address=models.OneToOneField(Address)
但这意味着每个地址都是唯一的,因此没有人住在同一所房子里。
对我来说(来自 Symfony 框架),我会在 Provider 和 User 中添加一个 OneToMany 字段,但在 Django 中,这是一个 ForeignKey in Address。
class Address:
street_name=models.CharField()
provider=models.ForeignKey(Provider)
user=models.ForeignKey(User)
class Provider:
class User:
但显然我想保留数据库中的地址信息。
我应该怎么做?我应该研究数据迁移 ( https://docs.djangoproject.com/en/1.8/topics/migrations/#data-migrations )
请您参考如下方法:
如果您将 OneToOneField 更改为 ForeignKey,那么您将能够为多个用户和提供商选择相同的地址。
class Provider:
address=models.ForeignKey(Address)
class User:
address=models.ForeignKey(Address)
您将需要创建一个迁移并运行它以删除数据库中的唯一约束。不需要数据迁移。
