Django查询:如何实现包含或不包含查询
我需要写一个查询,找出那些包含“wd2”这个子串的记录,或者根本不包含“wd”这个字符串的记录。有没有什么好的方法来实现这个?
看起来可以这样写:
Record.objects.filter( Q(parameter__icontains="wd2") | Q( ## 这里应该写什么? ## ) )
1 个回答
15
来自django的Q对象文档:
你可以通过使用Q对象和&(与)以及|(或)运算符来组合任意复杂的查询语句,还可以使用括号来进行分组。此外,Q对象还可以用~(取反)运算符来否定,这样你就可以同时进行正常查询和取反查询的组合查找:
Q(question__startswith='Who') | ~Q(pub_date__year=2005)
所以我建议
Record.objects.filter( Q(parameter__icontains="wd2") | ~Q(parameter__icontains="wd") )