我正在使用Django 1.11和Postgresql 9.6在我的应用程序中,有一个名为Person的模型,它有几个字段.在数据库中,它是物化视图.
class Person(models.Model):
personid = models.CharField(max_length=18, primary_key=True)
count = models.BigIntegerField()
native = models.CharField(max_length=2)
...
Run Code Online (Sandbox Code Playgroud)
执行时
persons = Person.objects.values('personid', 'native')\
.annotate(total=Count('native'))
Run Code Online (Sandbox Code Playgroud)
它说 psycopg2.ProgrammingError: column "person.native" must appear in the GROUP BY clause or be used in an aggregate function
当只选择一列或不将personid设置为主键或不执行注释时,它不会出错.
我打印查询sql:
SELECT
"person"."native",
"person"."personid",
COUNT("person"."native") AS "total"
FROM "person"
GROUP BY "person"."native", "person"."personid"
Run Code Online (Sandbox Code Playgroud)
我能做什么?
我将视图设置为表并将personid设置为主键,然后没有问题.