W Django Rest Framework, jak filtrować serializator, gdy jest on zagnieżdżony w innym serializatorze?
Moje filtry są nakładane w zestawach widoków DRF, ale kiedy wywołujesz serializator z innego serializatora, zestaw widoków zagnieżdżonego serializatora nigdy nie jest wywoływany, więc zagnieżdżone wyniki są wyświetlane jako niefiltrowane.
Próbowałem dodać filtr na źródłowym zestawie widoków, ale nie wydaje się, aby filtrował zagnieżdżone wyniki, ponieważ zagnieżdżone wyniki są wywoływane jako oddzielne wstępnie przygotowane zapytanie. (Widzisz, zagnieżdżony serializator jest wyszukiwaniem wstecznym).
Czy można dodać przesłonięcie get_queryset () w samym zagnieżdżonym serializatorze (przenosząc go z zestawu widoków), aby dodać tam filtr? Też próbowałem, ale bez powodzenia.
To jest to, czego próbowałem, ale nawet nie wydaje się, żebym go wywołał:
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
to klasa włączonaModelViewSet
, a nie w Serializatorze, dlatego nie jest wywoływana