首先,我知道如何解决这个问题,我只是想了解为什么会发生这种情况。错误信息:
users.profile: 字段“address”的反向查询名称与相关字段“Address.profile”发生冲突。为“address”定义添加related_name参数。
而代码如下:
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)
如果我理解正确,这行代码的意思是:
address = models.ForeignKey(Address, unique=True)
会导致在
Address
类中添加一个名为profile
的属性。是什么创建了另一个"profile"名称?
如果我不需要反向名称怎么办?有没有一种方法可以禁用它?地址用于许多事情,因此大多数反向关系将为空。
有没有一种将地址字段复制到模型中而不是拥有一个单独的地址表的方法?没有Python继承(这没有意义,如果一个模型有2个地址,它不起作用)。
AttributeError: type object 'Address' has no attribute 'profile'
。实际上...不给它命名,它就不再报错了。我不确定我改了什么 >.< 也许它被缓存了一段时间或者其他什么原因。 - mpen