Wie filtern Sie in Django Rest Framework einen Serializer, wenn er in einem anderen Serializer verschachtelt ist?
Meine Filter werden in den DRF-Ansichtssätzen festgelegt. Wenn Sie jedoch einen Serializer aus einem anderen Serializer heraus aufrufen, wird das Viewset des verschachtelten Serializers nie aufgerufen, sodass die verschachtelten Ergebnisse ungefiltert angezeigt werden.
Ich habe versucht, einen Filter für das ursprüngliche Ansichtsset hinzuzufügen, aber es scheint die verschachtelten Ergebnisse nicht zu filtern, da die verschachtelten Ergebnisse als separate vorab abgerufene Abfrage aufgerufen werden. (Der verschachtelte Serializer ist eine umgekehrte Suche.)
Ist es möglich, eine get_queryset () - Überschreibung im verschachtelten Serializer selbst hinzuzufügen (aus dem Viewset zu verschieben), um den Filter dort hinzuzufügen? Ich habe das auch ohne Glück versucht.
Dies ist, was ich versucht habe, aber es scheint nicht einmal genannt zu werden:
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 aufModelViewSet
, nicht auf dem Serializer, weshalb es nicht aufgerufen wird