mpe*_*pen 7 django django-models
首先,我知道如何解决问题,我只是想了解它为什么会发生.错误消息:
users.profile:字段'address'的反向查询名称与相关字段'Address.profile'冲突.将related_name a rgument添加到'address'的定义中.
和代码:
class Address(models.Model):
country = fields.CountryField(default='CA')
province = fields.CAProvinceField()
city = models.CharField(max_length=80)
postal_code = models.CharField(max_length=6)
street1 = models.CharField(max_length=80)
street2 = models.CharField(max_length=80, blank=True, null=True)
street3 = models.CharField(max_length=80, blank=True, null=True)
class Profile(Address):
user = models.ForeignKey(User, unique=True, related_name='profile')
primary_phone = models.CharField(max_length=20)
address = models.ForeignKey(Address, unique=True)
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,这一行:
address = models.ForeignKey(Address, unique=True)
Run Code Online (Sandbox Code Playgroud)
将导致将属性添加到Address具有名称的类中profile.是什么创造了另一个 "个人资料"的名字?
如果我不需要反向名称怎么办?有没有办法禁用它?地址用于十几种情况,因此大多数反向关系无论如何都是空白的.
有没有办法将地址字段复制到模型中,而不是为地址设置单独的表?没有Python继承(这没有意义,如果一个Model有2个地址,它就不起作用).
小智 24
在django文档中它说:
如果你更喜欢Django没有创建向后关系,请将related_name设置为'+'.例如,这将确保User模型不会与此模型建立向后关系:
user = models.ForeignKey(User, related_name='+')
Run Code Online (Sandbox Code Playgroud)
但我自己从未尝试过....
| 归档时间: |
|
| 查看次数: |
4497 次 |
| 最近记录: |