我有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。
答案 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)