在django中,对于用户,获取ForeignKey到他/她所属的组的所有对象(高效)

时间:2015-07-19 10:28:30

标签: django querying

我有3个模型,用户,小组和考试:

from django.db import models
from django.contrib.auth.models import User, Group

class Exam(models.Model):
    # a lot of fields
    solutions_group = models.ForeignKey(Group)

对于模型user的实例User,我希望获得Exam solutions_group所属的所有user

这就是我的想法:

exam_list = []
for group in user.groups.all():
    exam_list+= list(group.exam_set.all())

但这涉及多个数据库查询。

有没有更好的方法来执行此操作,涉及lesses查询?

我正在使用Python 3.4和Django 1.8。

2 个答案:

答案 0 :(得分:0)

尝试使用"in" filter

Exam.objects进行过滤
user_groups = user.groups.all()
user_exams = Exam.objects.filter(solutions_group__in=user_groups)

答案 1 :(得分:0)

我认为你也可以使用以下查询从group到user(user_set)使用related_name:

user_exams = Exam.objects.filter(solutions_group__user_set=user)