编辑:这个问题是对观察结果误解的结果。最初发布但不工作的片段解决了这个问题。对于将来会以同样的方式感到困惑的任何人,我将其全部留在下面。
我有两个模型answer
和answer_set
。我需要编写一个带answer_set
查询集并添加过滤器的函数。
我要申请的过滤条件是:answer_set
有answer
个特定code
和value
。
起初我尝试过类似的事情:
q.filter(answer__code=code, answer__value=value)
但当然这不起作用 - 这是两个单独的答案(SQL中的两个连接),即如果对正确的代码有一些答案而另一个具有正确的值,则过滤条件为真。 我想检查是否有一个满足这两个条件的答案。 编辑:这段代码实际上完全符合我的要求。
在SQL中非常简单:
...
JOIN answer
...
WHERE
...
answer.value = "some_value" AND answer.code = "some_code"
但我认为原始SQL是最后的手段。可以在Django ORM中完成吗? 编辑:是的,确实如此 - 请参阅上面的代码段。
答案 0 :(得分:3)
编辑:你说的不正确。 filter()
函数自动'和'它的参数。请参阅documentation on filter
答案 1 :(得分:1)
您可以使用Q对象来处理更复杂的查询。 见django docs about Q objects
from django.db.models import Q
q.filter(
Q(answer__code=code) & Q(answer__value=value)
)