0
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())))

“操作”字段为整数类型。此代码创建一个 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"}
4

0 回答 0