results = UmUrl.objects \
.filter(created_at__gte=sdate, created_at__lte=edate) \
.annotate(timeValue=self.get_date_format(param)) \
.values('timeValue') \
.order_by('timeValue') \
.annotate(blocked=Sum(Case(When(operation=0, then=1), default=0, output_field=models.IntegerField()))) \
.annotate(unBlocked=Sum(Case(When(operation=1, then=1), default=0, output_field=models.IntegerField())))
Поле 'операция' имеет тип Integer.Этот код создает запрос sql, но в результате sql параметры 'when' отображаются в виде строкового типа.Так что это не работает.
sql вывод, как это.Как я могу решить эту проблему?
{"query": "SELECT DISTINCT CONCAT(EXTRACT('year' FROM \"um_url\".\"created_at\" AT TIME ZONE 'Europe/Istanbul'), CONCAT('-', EXTRACT('month' FROM \"um_url\".\"created_at\" AT TIME ZONE 'Europe/Istanbul'))) AS \"timeValue\", SUM(CASE WHEN \"um_url\".\"operation\" = '0' THEN '1' ELSE '0' END) AS \"blocked\", SUM(CASE WHEN \"um_url\".\"operation\" = '1' THEN '1' ELSE '0' END) AS \"unBlocked\" FROM \"um_url\" WHERE (\"um_url\".\"created_at\" <= '2018-06-02 15:47:51.857000+00:00' AND \"um_url\".\"created_at\" >= '2018-06-01 15:47:51.857000+00:00') GROUP BY CONCAT(EXTRACT('year' FROM \"um_url\".\"created_at\" AT TIME ZONE 'Europe/Istanbul'), CONCAT('-', EXTRACT('month' FROM \"um_url\".\"created_at\" AT TIME ZONE 'Europe/Istanbul'))) ORDER BY \"timeValue\" ASC", "empty_check": "true"}