我一直在寻找这个问题的答案。
我有这些模型的架构
您了解答案中有2个外键:
我想获得一个包含2个用户回答的公共问题的行列表,即: 将包含userA和userB的答案的行返回到他们已回答的问题。 (看来这是一个很好的计算方法)
在SQL中,查询如下所示:
$sql = "SELECT <fields...>
FROM {votes} AS v1 INNER JOIN {votes} as v2
ON (v1.user = %d AND v2.user = %d AND v1.question = v2.question)";
因此,如果userA回答了问题1,2,3,4,5并且userB回答了问题2,4和7,则查询将返回以下行: * v1.user = userA,v1.question = 2,v2.user = userB,v2.question = 2,... * v1.user = userA,v1.question = 4,v2.user = userB,v2.question = 4,...
我用ORM尝试过很多东西,带有'tables'参数的extra()函数被django忽略,没有任何效果。 如何执行这样的查询,没有原始SQL(最多使用extra())?
由于
答案 0 :(得分:0)
因为我自己和Django相当陌生。到目前为止只需要进行简单的查询,也许我错过了一些东西。但不会
a_ans = Answer.objects.filter(user=a, question__answer__user=b)
b_ans = Answer.objects.filter(user=b, question__answer__user=a)
overall = a_ans|b_ans
做你想要的?或者如果不是这样,将每个限制分为两个单独的过滤器?