2016-11-21 3 views
0

ich ein Modell haben, wie folgt:Django Fremdschlüssel Rückreferenzierung Filter führt

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',) 

Ich habe eine Ansicht nur für Ergebnisse auszuprobieren:

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

Was ich will, ist: Ich bin vorbei Datum als URL-Parameter. Ich möchte diese Hall-Objekte aus einer bestimmten Stadt zurückgeben, für die zu diesem Zeitpunkt noch keine Ereignisse vorhanden sind. d.h. nur verfügbare Halle.

Wie kann ich das erreichen?

Antwort

0

ich meine Ansicht wie folgt aktualisiert:

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