django对float字段进行注释无法正常工作

问题描述

我正在使用 Django 2.2

我具有以下模型结构


class Location(models.Model):
  name = models.CharField(max_length=200)
  country_name = models.CharField(max_length=200)
  latitude = models.FloatField(null=True,blank=True)
  longitude = models.FloatField(null=True,blank=True)


class TrackingData(models.Model):
  location = models.ForeignKey(Location)

我想选择纬度和相同纬度的数量

data = TrackingData.objects.filter(locaiton__latitude__isnull=False).values(latitude=F('location__latitude')).annotate(count=Count('latitude'))

我得到的结果是

<TrackingDataQuerySet [{'latitude': 28.6324823,'count': 1},{'latitude': 28.6324823,'count': 1}]>

所有纬度都是相同的,但我仍然希望得到单独的结果

<TrackingDataQuerySet [{'latitude': 28.6324823,'count': 7}]>

编辑2

print(data.query)

输出
SELECT `tracking_location`.`latitude` AS `latitude`,COUNT(`tracking_location`.`latitude`) AS `count` FROM `tracking_trackingdata` INNER JOIN `tracking_location` ON (`tracking_trackingdata`.`location_id` = `tracking_location`.`id`) WHERE `tracking_location`.`address` IS NOT NULL GROUP BY `tracking_location`.`latitude`,`tracking_trackingdata`.`scan_time`,`tracking_trackingdata`.`created` ORDER BY `tracking_trackingdata`.`scan_time` DESC,`tracking_trackingdata`.`created` DESC

解决方法

data = TrackingData.objects.filter(locaiton__latitude__isnull=False).values(latitude=F('location__latitude').distinct()).annotate(count=Count('latitude'))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...