Найти все встречи на определенную дату

Моя цель - получить все встречи (дата_начала и время) за текущий месяц и поместить их в таблицу под датами текущего месяца. Например, показать все даты ноября (понедельник, вторник и т.д.) и под датами показать встречи, которые состоялись в этот день.

Можете ли вы предложить способ сделать это?

Моя первая попытка - получить все даты месяца (ноябрь) и показать их в шаблоне. Затем получить все встречи с начальной_датой и временем

class Appointment(models.Model):
    user = models.ForeignKey(Account, on_delete=models.CASCADE)
    seat = models.ForeignKey(Seat, on_delete=models.SET_NULL, null=True)
    start_appointment = models.DateTimeField(default=timezone.now, blank=True)
    end_appointment = models.DateTimeField(default=timezone.now, blank=True)

Например:

# Show dates of current month and show them in template
year = today.year
month= today.month
num_days = calendar.monthrange(year, month)[1]
days = [datetime.date(year, month, day) for day in range(1, num_days+1)]
print(days)

days_list = []
for days in days:
   days_str = days.strftime('%A, %d')
   days_list.append(days_str)
   print(days_str)

#Query for the appointments, something like:
appointments = Appointment.objects.filter()....

Запрос может выглядеть следующим образом,

from django.db.models.functions import TruncMonth, TruncYear, TruncDay

appointments = Appointment.objects.filter(
    start_appointment__gt="FILTERED DATETIME",
    end_appointment__lte="FILTERED DATETIME"
).annotate(
    year=TruncYear('start_appointment'),
    month=TruncMonth('start_appointment'),
    day=TruncDay('start_appointment'),
).values('year', 'month', 'day', ....)

Эта встреча будет сгруппирована по году, месяцу, дню и другим значениям, которые вам будут предоставлены. В соответствии с вашими потребностями вы можете настроить их. Более подробно вы можете прочитать в документации

Вернуться на верх