Django получить данные из второй модели, отфильтрованные по значениям из первой - PullRequest
0 голосов
/ 05 мая 2020

У меня есть эти две модели:

class Event(models.Model):
    name = models.TextField(blank=True)
    desc = models.TextField(blank=True) 
    address = models.TextField(blank=True)
    date = models.DateField(default=timezone.now)
    reservation_date = models.DateField()
    event_participant = models.IntegerField(blank=False,default=0)

class Reservation(models.Model):
    event_id = models.ForeignKey(Event, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=0)

Когда я перечисляю все свои события, я хочу рассчитать оставшуюся часть возможных участников. Итак, я попробовал это на мой взгляд:

def events_list(request):
    events = Event.objects.all().order_by('date')
    #I started here
    for event in events:
        obj = Reservation.objects.filter(event_id=event)

    return render(request, 'events_list.html', {'events': events, 'obj': obj})

Но объект пуст. Или есть способ лучше рассчитать участника (участник - количество)? Спасибо

1 Ответ

1 голос
/ 05 мая 2020

Прежде всего вы должны добавить related_name в свою модель Reservation, а также переименовать event_id:

class Reservation(models.Model):
    event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name='reservation_events')
    quantity = models.IntegerField(default=0)

Затем в вашем представлении вы можете использовать это query:

events = Event.objects.all().order_by('date')
objects = Reservation.objects.filter(reservation_events=events)

Надеюсь, этот ответ помог.

...