2016-11-21 65 views
0

我有一个模型,如下所示:Django的外键反向引用筛选结果

class Event(models.Model): 
    name = models.CharField(max_length=50, blank=False, verbose_name="Event name",) 
    date = models.DateField(auto_now=False, auto_now_add=False,) 
    hall = models.ForeignKey(Hall, on_delete=models.CASCADE, null=True, related_name='events',) 

我有一个观点只是尝试的结果:

@api_view(('GET',)) 
def get_specific_hall(request, cityId, year = None, month = None, day = None): 

    hall = Hall.objects.filter(city=cityId) 
    testHall = Hall.objects.get(city=cityId) 

    date = year + '-' + month + '-' + day 
    events = [] 

    for event in testHall.events.filter(~Q(date=date)): 
     events.append(event) 

    eventSerializer = EventSerializer(events, many=True)  
    serializer = HallSerializer(hall, many=True) 
    return Response(serializer.data + eventSerializer.data) 

我要的是:我传递日期作为url参数。我想要返回某个特定城市的Hall对象,并且该日期没有任何关联的事件。即只有可用的大厅。

我该如何做到这一点?

回答

0

我更新了我的看法如下:

@api_view(('GET',)) 
def get_specific_halls(request, cityId, year = None, month = None, day = None): 


    date = year + '-' + month + '-' + day 

    hall = Hall.objects.all().filter(Q (city=cityId) , ~Q(events__date=date)) 

    serializer = HallSerializer(hall, many=True) 
    return Response(serializer.data)