【发布时间】: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 不存在(visitor 是user 的外键,因此应该是 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