django过滤器中的逻辑操作
Posted
技术标签:
【中文标题】django过滤器中的逻辑操作【英文标题】:Logical operations in django filter 【发布时间】: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
【问题讨论】:
【参考方案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 字符串的内容??
我有两列名为a
和b
。我需要得到的只是 - 带有字符串的对象等于我的请求参数。我的意思是如果数据库中有a == "a"
和b == None
所在的行 - 我需要该行。如果a == "aaaa"
我不需要它。
你能显示你想要得到的 2 行吗
excepted rows 复制链接:i.imgur.com/maQi0uU.png以上是关于django过滤器中的逻辑操作的主要内容,如果未能解决你的问题,请参考以下文章