【问题标题】:Django Q chained queriesDjango Q 链式查询
【发布时间】:2012-10-16 18:05:14
【问题描述】:

我需要一个 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 OR src 大于 4 并且不以 713 OR 281 开头”

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

【问题讨论】:

  • 最后多了一个括号。什么是src?这似乎很复杂。您似乎想要 src=2, src>4 的行,不包括 src=713 或 281?

标签: django chain django-q


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你忘了放括号,

    -->> ( <<-- (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”是什么类型的数据?整数还是字符串?

    【讨论】:

    • 实际上有一个 .filter( 在其上方的行上方。我有另一个查询类似于: .filter( (Q(src__lte=4) & Q(src__startswith='1') ) | (Q(src__gt=4) & Q(src__startswith='713') & Q(src__startswith='281'))) 并且没有显示 713 281 个数字
    【解决方案3】:

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

    【讨论】:

    • 奇怪地将第一个 & 更改为 'and' 会改变我得到的结果,但是更改第二个并没有什么区别使用 & or 和 ?
    猜你喜欢
    • 2015-02-28
    • 2014-08-12
    • 2012-09-04
    • 2015-11-12
    • 2021-04-12
    • 2015-06-23
    • 2014-03-25
    • 2010-12-27
    • 2014-02-06
    相关资源
    最近更新 更多