以下内容包含语法错误:
date = datetime.now()-timedelta(minutes=30)
articles = Article.objects.filter(published=True).extra(select = {
"views" : """
SELECT COUNT(*)
FROM myapp_readership
JOIN myapp_article on myapp_readership.which_article_id = myapp_article.id
WHERE myapp_readership.reader_id = myapp_user.id
AND myapp_readership.what_time > %s """ % date,
}).order_by("-views")
错误是:语法错误在“01”附近(其中“01”是extra中的datetime对象)。没什么好谈的。有人能指出发生了什么事吗?在
背景:与上述代码相关的模型为:
^{pr2}$我写上面的代码是因为我试图获取所有已发表的文章,并按过去30分钟内每篇文章的独特读者群进行排序。一、 e.计算每一篇发表的文章在过去的半小时内有多少不同的(独特的)观点,然后根据这些不同的观点产生一个文章列表。我的代码缺少处理需求的“distinct”部分-我不知道如何在这里完成这一点。在
永远不要在SQL查询中使用字符串替换,不管它是否是
extra
调用的一部分。您已经发现了一个原因,因为没有正确地引用值,但更重要的原因是它使您对SQL注入保持开放。在相反,请使用db api提供的工具:在本例中,使用
select_params
:另请参见注释in the docs;
extra
方法已被弃用,查询当然可以用其他ORM方法表示。在相关问题 更多 >
编程相关推荐