【发布时间】:2013-05-06 06:21:12
【问题描述】:
我有一个看起来像这样的 Django 模型:
class Response(models.Model):
transcript = models.TextField(null=True)
class Coding(models.Model):
qid = models.CharField(max_length = 30)
value = models.CharField(max_length = 200)
response = models.ForeignKey(Response)
coder = models.ForeignKey(User)
对于每个 Response 对象,有两个 qid = "risk" 的编码对象,一个用于 coder 3,一个用于 coder 4。我想要做的是获取所有 Response 对象的列表coder 3 和 coder 4 的 value 差值大于 1。 value 字段存储数字 1-7。
事后我意识到将 value 设置为 CharField 可能是一个错误,但希望我能解决这个问题。
我相信类似下面的 SQL 会做我正在寻找的东西,但我宁愿用 ORM 来做这件事
SELECT UNIQUE c1.response_id FROM coding c1, coding c2
WHERE c1.coder_id = 3 AND
c2.coder_id = 4 AND
c1.qid = "risk" AND
c2.qid = "risk" AND
c1.response_id = c2.response_id AND
c1.value - c2.value > 1
【问题讨论】:
-
我认为您的意思是在查询的 WHERE 子句中包含
c1.response_id = c2.response_id。 -
@AryehLeibTaurog 是的,我做到了。谢谢。
标签: django django-orm django-filter