1

我需要一个 Django Q 查询的帮助,我试图将它串在一起,它看起来不错,但它不是很有效。查询是

( Q(src__lte=4) & Q(src__startswith='2') ) | 
( Q(src__gt=4) & ~Q(src__istartswith='713') & ~Q(src__istartswith='281') ) )

我试图完成的是“选择 src 小于 4 且 startsiwth 2 或 src 大于 4 且不以 713 或 281 开头”

结果显示以 713 和 281 开头的 src,我在这里做错了什么?谢谢。

4

3 回答 3

2

看来你是混合类型。src 是整数还是字符串?保持一致。

于 2012-10-26T20:54:23.883 回答
0

你试过用'and'代替'&'吗?

于 2012-10-26T15:18:00.623 回答
0

你忘了放括号,

-->> ( <<-- (Q(src__lte=4) & Q(src__startswith='2')) | (Q(src__gt=4) & ~Q(src__istartswith='713') & ~Q(src__istartswith='281')))

要么你必须删除最后一个。

或者你没有粘贴整行..

你可能想试试这个:

(Q(src__gt=4) & !(Q(src__startswith=u'713') | Q(src__startswith=u'281'))

您的“src”是什么类型的数据?整数还是字符串?

于 2012-10-26T13:50:38.377 回答