sel*_*lar 2 django many-to-many filter
我正在构建动态过滤器,我通过GET传递给查询集过滤器:
for k, v in request.GET.iteritems():
kwargs[str(k)] = str(v)
students = models.Student.objects.filter( **kwargs )
Run Code Online (Sandbox Code Playgroud)
它正在为我投掷的几乎所有查询工作.但是,我有一个相关的模型,有很多关系,Group.因此,学生可以成为许多团体的成员.我可以使用以下内容过滤属于特定组的学生:'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 == []
Run Code Online (Sandbox Code Playgroud)
最后一个版本是我希望实际工作的.我确信我可以通过修改顶部代码来实现这一点
if request.GET['something']:
students = models.Student.objects.exclude(groups__isnull=False)
else:
students = models.Student.objects.filter( **kwargs )
Run Code Online (Sandbox Code Playgroud)
所以我想问题就变成了,我怎么能创造出来
students = models.Student.objects.exclude(groups__isnull=False)
Run Code Online (Sandbox Code Playgroud)
使用.filter()?
也许我不明白这个问题.但我明白了:
list(MyMod.objects.exclude(foo__isnull=False)
) == list(MyMod.objects.filter(foo__isnull=True))
Run Code Online (Sandbox Code Playgroud)