我有一个地址模型,它对Contact模型有一个ForeignKey:
class Address(models.Model):
street = models.CharField(max_length=25)
postal_code = models.CharField(max_length=25)
city = models.CharField(max_length=50)
country = models.CharField(max_length=50)
contact = models.ForeignKey(Contact, related_name='address to contact')
class Contact(models.Model):
salutation = models.CharField(max_length=1, choices=salutation_choices, verbose_name="salutation")
title = models.ForeignKey(Title, blank=True, null=True)
...
现在我想根据地址对象中的数据过滤我的Contact对象。 因此,我想在文档的这一部分之后创建一个跨越关系的过滤器:
我试过这样:
result_set = Contact.objects.filter(address__street__contains='mystreet')
我收到以下错误消息:
Cannot resolve keyword 'address' into field. Choices are: address to contact, birthdate..
实际上错误消息告诉我有一个要联系的字段地址,但问题是如何引用它?
答案 0 :(得分:4)
您已将联系人related_name
设置为address to contact
。这是Django用于从Contact到Address的向后关系的值 - 因为这不是一个有效的属性名称,我很惊讶它可以工作。
删除此属性,您的查找应该有效。