如何在Django queryset过滤中执行不等于?
在Django模型QuerySets中,我看到比较值存在__gt
和__lt
,但是存在__ne// !=/ <>
(不等于?)。
我想使用不等于过滤掉:
例:
Model: bool a;
int x;
我想要
results = Model.objects.exclude(a=true, x!=5)
在!=
不正确的语法。我试过__ne,<>
。
我最终使用:
results = Model.objects.exclude(a=true, x__lt=5).exclude(a=true, x__gt=5)
回答:
也许Q对象可以帮助解决此问题。我从未使用过它们,但似乎可以将它们取反并组合起来,就像普通的python表达式一样。
更新:我只是尝试了一下,它似乎工作得很好:
>>> from myapp.models import Entry>>> from django.db.models import Q
>>> Entry.objects.filter(~Q(id = 3))
[<Entry: Entry object>, <Entry: Entry object>, <Entry: Entry object>, ...]
以上是 如何在Django queryset过滤中执行不等于? 的全部内容, 来源链接: utcz.com/qa/435298.html