Wie filterst du eine verschachtelte serializer in Django Rest Framework?

In Django Rest Framework, wie filterst du einen serializer, wenn es verschachtelt ist, in einem anderen serializer?

Meine Filter auferlegt werden, die in der DRF viewsets, aber wenn Sie rufen Sie einen serializer aus, die innerhalb einer anderen serializer, der viewset der serializer geschachtelt wird nie genannt, also die geschachtelte Ergebnisse erscheinen ungefiltert.

Habe ich versucht, indem Sie einen filter auf Ursprung viewset, aber es scheint nicht zu filtern, die geschachtelte Ergebnisse, da die nested-Ergebnisse aufgerufen werden, da eine separate pre-fretched Abfrage. (Der serializer geschachtelt ist ein reverse-lookup, die Sie sehen.)

Ist es möglich, fügen Sie ein get_queryset() überschreiben, in der geschachtelten serializer selbst (bewegen Sie es aus der viewset), zum hinzufügen von filtern gibt es? Ich habe versucht, auch kein Glück.

Dies ist, was ich versucht, aber es schadet auch nicht, die scheinen aufgerufen:

class QuestionnaireSerializer(serializers.ModelSerializer):
    edition = EditionSerializer(read_only=True)
    company = serializers.StringRelatedField(read_only=True)

    class Meta:
        model = Questionnaire

    def get_queryset(self):
        query = super(QuestionnaireSerializer, self).get_queryset(instance)
        if not self.request.user.is_staff:
            query = query.filter(user=self.request.user, edition__hide=False)
        return query
  • get_queryset ist eine Klasse ModelViewSet, nicht auf der Serializer, das ist, warum es nicht immer genannt
InformationsquelleAutor John | 2015-01-27
Schreibe einen Kommentar