Django从第二个模型获取数据,该模型按第一个模型的值过滤

时间:2020-05-05 09:28:50

标签: django django-models django-views

我有以下两种模型:

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})

但是obj为空。 还是有更好的方法来计算参与者(参与者-数量)? 谢谢

1 个答案:

答案 0 :(得分:0)

首先,您必须在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)

希望这个答案有所帮助。