在 Django 模型 QuerySet 中,我看到__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)
查询中的field=value
field__exact=value
的简写。也就是说, Django 将查询运算符放在标识符中的查询字段上。 Django 支持以下运算符:
exact
iexact
contains
icontains
in
gt
gte
lt
lte
startswith
istartswith
endswith
iendswith
range
date
year
iso_year
month
day
week
week_day
iso_week_day
quarter
time
hour
minute
second
isnull
regex
iregex
我敢肯定,如 Dave Vogt 所建议的那样,将它们与 Q 对象结合起来,并像Jason Baker 所建议的filter()
或exclude()
,就可以对任何可能的查询获得准确的需求。