Вложенный запрос Django с Aggregate.Sum () - PullRequest
0 голосов
/ 06 сентября 2018

ВОПРОС

У меня есть приложение, которое будет делать онлайн-бронирования для серии еженедельных мероприятий. Я хотел бы отобразить список предстоящих событий в HTML-шаблон с количеством оставшихся мест, доступных на одной HTML-странице. Мне удалось создать представления, чтобы отобразить список предстоящих событий, и другое представление, чтобы отобразить количество оставшихся свободных мест, но я не могу понять, как вложить эти два в одно представление. Пример ниже ...

ВЫХОД HTML

Название мероприятия Неделя 1 - x количество мест, оставшихся для этого события

Название мероприятия Неделя 2 - x количество мест остается неизменным для этого события

Название мероприятия Неделя 3 - x количество мест, оставшихся для этого события

и так далее ...

МОДЕЛЬ

class Events(models.Model):
   event_date = models.DateField(auto_now_add=False)
   event_time = models.TimeField(auto_now_add=False)
   event_type = models.CharField(max_length=20, choices=EVENT_TYPE)
   seating = models.IntegerField(default=0)
   title = models.CharField(max_length=200)
   description = models.TextField()
   menu = models.TextField()
   price = models.DecimalField(max_digits=6, decimal_places=2)
   publish = models.CharField(max_length=1, choices=PUBLISH_CHOICE)

   def __int__(self):
      return self.title

class Reservations(models.Model):
   user_id = models.IntegerField(default=0)
   event_id = models.IntegerField(default=0)
   reservations = models.IntegerField(default=0)

   def __int__(self):
      return self.event

МНЕНИЯ

def events_view(request):

события = Events.objects.filter (публикация = 'Y'). Фильтр (event_date__gte = datetime.now ()). Order_by ( 'event_date') booking_count = Reservations.objects.aggregate (Sum ('reservations'))

    return render(request, 'restaurant/events.html',{"events":events, "reservation_count":reservation_count, })

def make_reservation_view(request, pk):
   event = Events.objects.get(id=pk)
   seating_available = Events.objects.get(id=pk)
   seating_available = seating_available.seating
   reservation_count = Reservations.objects.filter(event_id=pk).aggregate(res_sum=Sum('reservations'))
   res = reservation_count['res_sum']
   seats_remaining = seating_available - res

return render(request, 'restaurant/make_reservation.html', {"event":event, \
                                                           "seats_remaining":seats_remaining,})
...