2016-04-30 2 views
1

ich mehrere Bilder in der Detailansicht der Galerie api zeigen müssen, aber ich erhalte eine Fehlermeldung,MultipleObjectsReturned bei/api/Miete/gallery/1/

MultipleObjectsReturned bei/api/Miete/gallery/1/

get() gab mehr als eine Galerie zurück - es gab 2 zurück!

views.py

class GalleryListAPIView(ListAPIView): 
    # queryset = Rental.objects.all() 
    serializer_class = GalleryListSerializer 
    pagination_class = RentalPageNumberPagination 

    def get_queryset(self, *args, **kwargs): 
     queryset_list = Gallery.objects.all() 
     return queryset_list 

class GalleryDetailAPIView(RetrieveAPIView): 
    queryset = Gallery.objects.all() 
    serializer_class = GalleryDetailSerializer 
    lookup_field = 'rental_id' 

serializers.py

class GalleryListSerializer(ModelSerializer): 
    class Meta: 
     model = Gallery 

class GalleryDetailSerializer(ModelSerializer): 
    # image = SerializerMethodField(many=True) 
    class Meta: 
     model = Gallery 
     fields = ('id', 'image', 'rental_id') 
+2

Wie der Fehler sagt, haben Sie zwei Gallery-Objekte mit rental_id = 1. –

+0

Könnten Sie bitte auch die Modelle hinzufügen? – trinchet

Antwort

1

Werfen Sie einen Blick auf die documentation

lookup_field - Das Modell Feld, das Shou ld verwendet werden, um die Objektsuche einzelner Modellinstanzen durchzuführen. Standardeinstellung ist 'pk'.

Da Sie rental_id verwendet haben und Sie verwenden die URL /api/rentals/gallery/1/ hier 1 ist die rental_id und nicht die pk der Galerie. Und es könnte sein, dass es zwei Galerieobjekte gibt, die sich auf rental_id=1 beziehen und deshalb erhalten Sie diese im Ergebnis.