我刚接手另一位开发人员的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)
答案 0 :(得分:3)
如果您将OneToOneField
更改为ForeignKey
,则可以为多个用户和提供商选择相同的地址。
class Provider:
address=models.ForeignKey(Address)
class User:
address=models.ForeignKey(Address)
您需要创建一个迁移并运行它以删除数据库中的唯一约束。不需要进行数据迁移。