我需要获取一个外键的查询集,但我无法弄清楚如何。
我有以下型号:
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使用。
由于
答案 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()