Попытка написать запрос Django, который считает события в день для событий, которые охватывают несколько дней - PullRequest
0 голосов
/ 23 октября 2019

Я использую Django и пытаюсь подсчитать количество событий, которые выполняются каждый день, на основе событий, проходящих за несколько дней. Например, если событие 1 начинается в понедельник и заканчивается в среду, а событие 2 начинается во вторник и заканчивается в четверг, количество событий в день должно быть следующим: понедельник (1 событие), вторник (2 события), среда (2 события),Четверг (1 событие). Модель событий выглядит следующим образом:

class Event(models.Model):
   name = models.CharField(max_length=300, blank=True) 
   start_date = models.DateTimeField(blank=True)
   end_date = models.DateTimeField(blank=True)

   def __str__(self):
       return self.name

Я бы хотел, чтобы результаты запроса включали дату дня, на который мы рассчитываем, количество событий, запущенных в этот день, и название каждого событияработает в тот день. Любая помощь по этому запросу Django будет полезна. Заранее спасибо!

1 Ответ

2 голосов
/ 23 октября 2019

Чтобы найти счет для конкретной даты, мы можем сделать что-то вроде этого:

from datetime import date

target_date = date.today()    # Change this according to your needs.

todays_events = Event.objects.filter(
    start_date__date__lte=target_date,    # 'start_date__lte=target_date' if 'start_date' is a 'DateField'.
    end_date__date__gte=target_date,      # 'end_date__gte=target_date' if 'end_date' is a 'DateField'.
).count()

Возможно, вы захотите прочитать: Справочник по API QuerySet . У него много примеров.


Чтобы найти все даты, извлеките все объекты с minimum information required и сосчитайте с помощью Python.

events = Event.objects.all().only('start_date', 'end_date')    # Only fetch 'start_date' and 'end_date' fields.

Напишите свой кодв Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...