在一个名为 links 的Django应用程序中,我一度在查询集上运行以下代码,并收到错误:列user_id不存在:
date = datetime.now()-timedelta(hours=1)
groups = Group.objects.filter(private='0').extra(select = {
"views" : """
SELECT COUNT(*)
FROM links_grouptraffic
JOIN links_group on links_grouptraffic.which_group_id = links_group.id
WHERE links_grouptraffic.visitor_id = user_id
AND links_grouptraffic.time > %s """}, select_params=(date,),
).order_by("-views")
此代码中的user_id是对Django.contrib.auth
user
的引用。我没有以任何方式覆盖这一点。
我尝试过的其他事情:
如果我将user_id
更改为user.id
,则会收到错误:语法错误在“或”附近。“这是在引用行{{1}时引发的}
如果我将WHERE links_grouptraffic.visitor_id = user_id.
更改为user_id
,则会收到错误:缺少表“links_user”
如果我将links_user.id
更改为user_id
(相应地,user
更改为visitor_id
),则会收到错误:列links_grouptraffic.visitor不存在< / strong>(visitor
是visitor
的外键,因此应该是user
)。
相关模型是:
visitor_id
我该如何解决这个问题?
答案 0 :(得分:1)
owner_id
不是user_id
:
SELECT COUNT(*)
FROM links_grouptraffic
JOIN links_group on links_grouptraffic.which_group_id = links_group.id
WHERE links_grouptraffic.visitor_id = owner_id
AND links_grouptraffic.time > %s