4

我是一个菜鸟 django 用户,我在使用 Model.objects.all 方法时遇到了一些问题。我有一个用户模型:(我知道以明文形式保存密码是不好的做法,但这只是一个玩具示例)

class UsersModel(models.Model):
    password = models.CharField(max_length=MAX_PASSWORD_LENGTH)
    user = models.CharField(max_length=MAX_USERNAME_LENGTH, primary_key=True)
    count = models.IntegerField()

而且我有一个测试方法应该删除用户表中的所有条目:

def function(self):
    UsersModel.objects.all().delete()

出于某种原因,调用 UsersModel.objects.all() 会引发错误

DatabaseError: column "cs169proj1_usersmodel.user" must appear in the GROUP BY clause or 
be used in an aggregate function
LINE 1: SELECT "cs169proj1_usersmodel"."user", "cs169proj1_usersmode...

从谷歌搜索,我发现 SQL 中的这个特殊错误只出现在 Postgresql(我正在使用)上。任何人都知道如何解决/解决这个问题?

4

2 回答 2

5

听起来列名count被误解为聚合函数

最佳解决方案:永远不要使用保留字作为标识符。

于 2013-02-11T06:35:00.013 回答
2

在使用 postgresql 从 django 1.6 升级到 1.9.8 时,我遇到了类似的问题。

在我的情况下,问题是由于 Django 1.9 中的更改至少需要 postgresql 9.1,如此处所述

很好的 redhat/centos的postgresql 更新说明。

于 2016-07-20T17:53:06.367 回答