Django Query中的PostgreSQL编程错误

问题描述 投票:-1回答:1

我有一个查询如下,它返回特定课程(学年)特定学期(学期)特定班级的所有学生的成绩:

grades = Grade.objects.filter(term='First', student__in_class=1,session=1).order_by('-total')

然后是另一个通过成绩注释的查询,以获得“总计”字段的总和。

grades_ordered = grades.values('student')\
    .annotate(total_mark=Sum('total')) \
    .order_by('-total_mark')

起初一切正常,直到我从使用SQLite迁移到postgreSQL,然后出现以下错误。

错误:

function sum(character varying) does not exist
LINE 1: SELECT "sms_grade"."student_id", SUM("sms_grade"."total") AS...
                                         ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

编辑:这是我的模特

class Grade(models.Model):
    session = models.ForeignKey(Session, on_delete=models.CASCADE)
    term = models.CharField(choices=TERM, max_length=7)
    student = models.ForeignKey(Student, on_delete=models.CASCADE)
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    fca = models.CharField(max_length=10)
    sca = models.CharField(max_length=10)
    exam = models.CharField(max_length=10)
    total = models.CharField(max_length=3, blank=True, null=True)
    grade = models.CharField(choices=GRADE, max_length=1, blank=True, null=True)
    remark = models.CharField(max_length=50, blank=True, null=True)

任何你能提供的帮助将不胜感激。

谢谢

django postgresql django-orm django-database django-annotate
1个回答
5
投票

存储整数或十进制数不在text / varchar字段中

total = models.Integer(max_length=3, blank=True, null=True)

看到这个link

还读了this

© www.soinside.com 2019 - 2024. All rights reserved.