【发布时间】:2020-12-27 11:16:52
【问题描述】:
我正在使用 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}, {'latitude': 28.6324823, 'count': 1}, {'latitude': 28.6324823, 'count': 1}, {'latitude': 28.6324823, 'count': 1}, {'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
【问题讨论】:
-
28.63.24.823是一个有效的浮点值吗? -
抱歉,这是一个拼写错误。固定。
-
print(data.query)的结果是什么? -
在问题中检查
Edit 2以获取print(data.query)的输出
标签: django django-queryset django-annotate