2011-03-26 74 views
0

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

我有以下型号:

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

然后,对于当前用户,我需要检索引用的用户一个查询集。下面退货联系对象,我需要的用户对象:

print request.user.contact_set.all() 

而且,它需要一个queryset的,因为它会通过一个ModelMultipleChoiceField使用。

感谢

回答

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

应该这样做

+0

+1良好的通话。这绝对是一个更好的解决方案。我有一个脑屁。 – 2011-03-26 18:16:49

1

王子与语法正确的,但我想指出,这实际上是一个多对多的关系。如果你已经证明了完整的联系人定义,并没有任何其他的表,你可以错过了整个表,只是直接定义上CustomUser的关系:

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

或者,如果你有其他领域在联系人上,您可以在该ManyToManyField上添加through='Contact'

在这两种情况下,查询就变成了:

request.user.referenced_users.all()