Количество вхождений в 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,
    })
Вернуться на верх