【发布时间】:2013-01-26 05:59:45
【问题描述】:
我是一个菜鸟 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(我正在使用)上。有谁知道如何解决/解决这个问题?
【问题讨论】:
-
你有这个模型的自定义管理器吗?
-
我认为这不是错误的原因,但在使用 id 以外的其他内容作为 primary_key 时应该小心。它可能会导致管理站点出现问题:请参阅stackoverflow.com/q/2011629/117092
-
修复了!我删除并重新创建了数据库,然后运行 manage.py syncdb。不知道它是什么,但它现在已经消失了。
标签: python sql django postgresql