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

时间:2010-02-25 14:35:41

标签: python django

我必须进行查询,以获取包含“wd2”子字符串或根本不包含“wd”字符串的记录。有没有办法做得很好?

似乎是这样的:

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

1 个答案:

答案 0 :(得分:13)

来自django q object documentation

  

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

Q(question__startswith='Who') | ~Q(pub_date__year=2005)

所以我建议

Record.objects.filter( Q(parameter__icontains="wd2") | ~Q(parameter__icontains="wd") )