Количество вхождений в django
Как рассчитать и сохранить в базе данных количество случаев появления в день числа участников меньше максимального числа участников в пространстве радиусом R=50км.
# models.py
class Even(models.Model):
name = models.CharField(max_length=200, null=True, blank=True)
date = models.DateField(null=True, blank=True)
time = models.TimeField(null=True, blank=True)
participant = models.PositiveIntegerField(null=True, blank=True)
longitude = models.FloatField(null=True, blank=True)
latitude = models.FloatField(null=True, blank=True)
geom = models.PointField(srid=4326, null=True, blank=True,)
@property
def longitude(self):
return self.geom.x
@property
def latitude(self):
return self.geom.y
def __str__(self):
return self.name
# views.py
def even_nb_jour(request):
labels = []
data = []
today = date.today()
even_max_today = Even.objects.filter(date=today).aggregate(Max('particpant'))
pnt = Even.objects.filter(date=today).filter(geom_magnitude=even_max_today)
queryset = Even.objects.filter(date=today).values('time').filter(geom__distance_lte=(pnt, Distance(km=50))).annotate(time_name=Count('name')).order_by('time')
for rm in queryset:
labels.append(rm['time'])
data.append(rm['time_name'])
return JsonResponse(data={
'labels': labels,
'data': data,
})