Ошибка программирования PostgreSQL в Django Query - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть запрос, как показано ниже, который возвращает оценку всех учащихся определенного класса за определенный семестр (семестр) за определенный сеанс (учебный год):

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

затем другой запрос, который комментируетчерез оценки, чтобы получить сумму поля 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)

любая помощь, которую вы можете предоставить, будет оценена.

спасибо

1 Ответ

0 голосов
/ 21 февраля 2019

Хранить числа в целых или десятичных числах, а не в текстовом поле / поле varchar

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

см. Эту ссылку

также читать эту

...