获取foreignkey的查询集

时间:2011-03-26 17:41:31

标签: django orm foreign-keys

我需要获取一个外键的查询集,但我无法弄清楚如何。

我有以下型号:

class Contact(models.Model):
    owner = models.ForeignKey(CustomUser, related_name='contact_set')
    referenced = models.ForeignKey(CustomUser, related_name='contacted_by_set')

然后,对于当前用户,我需要一个检索引用的用户的查询集。以下返回Contact对象,我需要User对象:

print request.user.contact_set.all()

此外,它需要是一个查询集,因为它将由ModelMultipleChoiceField使用。

由于

2 个答案:

答案 0 :(得分:2)

User.objects.filter(contacted_by_set__owner=request.user) 

应该这样做

答案 1 :(得分:1)

Oji的语法是正确的,但我要指出这实际上是一个ManyToMany关系。如果您已显示完整的Contact定义,并且没有任何其他表,则可能会错过整个表并直接在CustomUser上定义关系:

contacts = ManyToManyField('self', related_name='referenced_users')

或者,如果您在联系人上有其他字段,则可以在ManyToManyField上添加through='Contact'

在任何一种情况下,查询都会变为:

request.user.referenced_users.all()