Я создаю динамические фильтры, которые я передаю GET фильтру наборов запросов:
for k, v in request.GET.iteritems():
kwargs[str(k)] = str(v)
students = models.Student.objects.filter( **kwargs )
, и он работает почти для всех запросов, которые я к нему добавляю.Тем не менее, у меня есть родственная модель с множеством отношений, группа.Таким образом, студент может быть членом многих групп.Я могу отфильтровать студентов, которые принадлежат к определенной группе, используя следующее: 'groups__in='+str(group.id)
например - //example.com/students/?groups__in=1
Но я могуНе могу понять, как фильтровать студентов, которые не принадлежат ни к одной группе.Я безуспешно пробовал следующее:
groups__in=None # students == []
groups__exact=None # students == []
groups__iexact=None # FAIL not that I really expected this to work
groups__isnull=True # students == []
Последняя версия была тем, что я надеялся на самом деле работать.Я уверен, что смогу заставить это работать, изменив верхний код на что-то вроде
if request.GET['something']:
students = models.Student.objects.exclude(groups__isnull=False)
else:
students = models.Student.objects.filter( **kwargs )
Так что я думаю, возникает вопрос, как я могу создать
students = models.Student.objects.exclude(groups__isnull=False)
, используя .filter()