在Django模型查询集中,我看到比较值有一个__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)
Tags:
或许Q objects可以帮助解决这个问题。我从未使用过它们,但它们似乎可以被否定和组合,就像普通的python表达式一样。
最新消息:我刚刚试过,看起来效果不错:
您的查询似乎有一个双负数,您希望排除x不是5的所有行,因此换句话说,您希望包括x是5的所有行。我相信这会成功的。
要回答您的特定问题,没有“不等于”,但这可能是因为django同时有“filter”和“exclude”方法可用,因此您可以随时切换逻辑以获得所需的结果。
查询中的
field=value
语法是field__exact=value
的简写。也就是说Django puts query operators on query fields in the identifiers。Django支持以下运算符:我确信,通过将它们与Q对象组合成Dave Vogt suggests,并使用
filter()
或exclude()
作为Jason Baker suggests,您将得到您所需要的任何可能的查询。相关问题 更多 >
编程相关推荐