2015-07-19 18 views
1

我有3種型號,用戶,組和考試:在Django,對於用戶,讓這FOREIGNKEY到組他/她所屬的(有效)的所有對象

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 S IN,其solutions_groupuser所屬。

這是我想到的:

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

但是,這涉及到多個數據庫查詢。

有沒有更好的方式來做到這一點,涉及lesses查詢?

我使用Python 3.4和1.8的Django。使用上Exam.objects

回答

0

嘗試過濾的"in" filter

user_groups = user.groups.all() 
user_exams = Exam.objects.filter(solutions_group__in=user_groups) 
0

我想你也可以使用related_name從小組使用下面的查詢用戶(user_set):

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

'Exam.objects.filter (solutions_group__user_set = admin)'不起作用。 'ValueError異常:無法查詢「管理員」:必須是「集團」 instance.'這裏是admin User類型。 –

+0

'Exam.objects.filter(solutions_group__user_set =用戶)'沒有工作。 'ValueError異常:無法查詢「高斯」:必須是「集團」 instance.'這裏的「高斯」是'user.username' –

相關問題