Django查询:如何进行包含OR not_contains查询

Dat*_*eed 6 python django

我必须进行一个查询,它将获得包含"wd2"子字符串或根本不包含"wd"字符串的记录.有没有办法很好地做到这一点?

似乎是这样的:

Record.objects.filter( Q(parameter__icontains="wd2") | Q( ## what should be here? ## ) )

Dav*_*ger 13

从django q对象文档:

您可以通过将Q对象与&和|组合来编写任意复杂度的语句 运营商并使用括号分组.此外,可以使用〜运算符取消Q对象,允许组合查找结合常规查询和否定(NOT)查询:

Q(question__startswith='Who') | ~Q(pub_date__year=2005)
Run Code Online (Sandbox Code Playgroud)

所以我建议

Record.objects.filter( Q(parameter__icontains="wd2") | ~Q(parameter__icontains="wd") )
Run Code Online (Sandbox Code Playgroud)