【问题标题】:SQL Syntax error, while formulating Django queryset using extraSQL 语法错误,同时使用额外的 Django 查询集
【发布时间】:2015-11-19 12:39:15
【问题描述】:

在名为 links 的 Django 应用程序中,有一次我在查询集上运行以下代码,并收到错误:column user_id does not exist

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,我会收到错误:在“.”或附近出现语法错误这是在引用WHERE links_grouptraffic.visitor_id = user_id. 行时抛出的

如果我将user_id 更改为links_user.id,我会收到错误:缺少表“links_user”的 FROM 子句条目

如果我将user_id 更改为user(并相应地将visitor_id 更改为visitor),我会收到错误:column links_grouptraffic.visitor 不存在visitoruser 的外键,因此应该是 visitor_id)。


相关模型有:

class Group(models.Model):
    topic = models.TextField(validators=[MaxLengthValidator(200)])
    owner = models.ForeignKey(User)
    private = models.CharField(max_length=5, default=0)
    created_at = models.DateTimeField(auto_now_add=True)

class GroupTraffic(models.Model):
    visitor = models.ForeignKey(User)
    which_group = models.ForeignKey(Group)
    time = models.DateTimeField(db_index=True, auto_now_add=True)

我该如何解决这个问题?

【问题讨论】:

  • 您确定您的group 模型有user_id 列吗?
  • @TomaszJakubRup:组模型,还是组流量模型?
  • 这个:groups = Group.objects.filter(private='0')
  • 群组模型具有属性owner = models.ForeignKey(User),群组流量模型具有属性visitor = models.ForeignKey(User)

标签: python sql django postgresql


【解决方案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 

【讨论】:

  • 别忘了to vote。投票可以促进好的答案。
猜你喜欢
  • 2016-02-21
  • 2015-01-05
  • 2012-04-16
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2018-03-27
  • 1970-01-01
  • 2017-11-14
相关资源
最近更新 更多