【问题标题】:Logical operations in django filterdjango过滤器中的逻辑操作
【发布时间】:2018-06-19 13:52:44
【问题描述】:

我需要在哪里获取我的查询集:

(a="a" AND b=None) OR (a=None AND b="b")

我知道 django 中的 Q 对象,但是这种语法不起作用:

cls.objects.filter(models.Q(a="a", b=None) | models.Q(a=None, b="b"))

我绝对确定我的数据库包含预期的对象。但我得到的只是空的查询集。
我想这里的语法有一些问题。但是在哪里呢?
excepted rows picture. i need only first one and second one

【问题讨论】:

    标签: python django django-q


    【解决方案1】:
    cls.objects.filter(models.Q(a="a", b='None') | models.Q(a='None' AND b="b"))
    

    试试这个

    【讨论】:

    • cls.objects.filter(models.Q(a="a", b__isnull=True) | models.Q(a__isnull=True, b="b")) 类似结果 - 空查询集
    • 你能告诉我你的数据库的列中有什么吗?您是否要查找所有包含 a 和 b 字符串的内容??
    • 我有两列名为ab。我需要得到的只是 - 带有字符串的对象等于我的请求参数。我的意思是如果数据库中有a == "a"b == None 所在的行 - 我需要该行。如果a == "aaaa" 我不需要它。
    • 你能显示你想要得到的 2 行吗
    猜你喜欢
    • 1970-01-01
    • 2021-07-07
    • 2018-03-10
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多