django查找跨越关系 - 如何

时间:2010-01-05 08:50:54

标签: django django-models

我有一个地址模型,它对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对象。 因此,我想在文档的这一部分之后创建一个跨越关系的过滤器:

lookup that span relationship

我试过这样:

result_set = Contact.objects.filter(address__street__contains='mystreet')

我收到以下错误消息:

Cannot resolve keyword 'address' into field. Choices are: address to contact, birthdate..

实际上错误消息告诉我有一个要联系的字段地址,但问题是如何引用它?

1 个答案:

答案 0 :(得分:4)

您已将联系人related_name设置为address to contact。这是Django用于从Contact到Address的向后关系的值 - 因为这不是一个有效的属性名称,我很惊讶它可以工作。

删除此属性,您的查找应该有效。