Django ProgrammingError должен появляться в предложении GROUP BY или использоваться в агрегатной функции с помощью annotate func
Вот моя модель.
class EnvAi(models.Model):
dateandtime = models.CharField(db_column='DateAndTime', max_length=50, blank=True, null=True) # Field name made lowercase.
tagname = models.CharField(db_column='TagName', max_length=50, blank=True, null=True) # Field name made lowercase.
datavalue = models.CharField(db_column='DataValue', max_length=50, blank=True, null=True) # Field name made lowercase.
пример даты и времени: "2022-08-10 10:10:20"
поле dateandtime является charField и я должен нарезать дату и время, чтобы получить то, что я хочу.
# views.py
queryset = EnvAi.objects.values('datavalue', 'tagname').annotate(slicedate=Substr('dateandtime', 1, 10)) # slicedate => "2022-08-10"
# Error Code
queryset = queryset.values('tagname', 'slicedate').annotate(max_value=Max('datavalue'))
после создания переменной 'slicedate', я хочу получить максимальное значение каждого tagname и slicedate.
но я получаю ошибку
ProgrammingError: column "Env_AI.DateAndTime" must appear in the GROUP BY clause or be used in an aggregate function
Я пробовал использовать raw sql в базе данных с помощью запроса, но проблем не возникло.
Как я могу решить эту проблему?