SQL语法错误,同时使用额外

时间:2015-11-19 12:39:15

标签: python sql django postgresql

在一个名为 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”

的FROM子句条目

如果我将links_user.id更改为user_id(相应地,user更改为visitor_id),则会收到错误:列links_grouptraffic.visitor不存在< / strong>(visitorvisitor的外键,因此应该是user)。

相关模型是:

visitor_id

我该如何解决这个问题?

1 个答案:

答案 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