В Django Rest Framework, как вы фильтруете сериализатор, когда он вложен в другой сериализатор?Как фильтровать вложенный сериализатор в Django Rest Framework?
Мои фильтры накладываются на виды просмотра DRF, но когда вы вызываете сериализатор из другого сериализатора, просмотр вложенного сериализатора никогда не вызывается, поэтому вложенные результаты нефильтруются.
Я попытался добавить фильтр на исходном представлении, но он, кажется, не фильтрует вложенные результаты, потому что вложенные результаты вызывают как отдельный предварительно отлаженный запрос. (Вы видите, что вложенный сериализатор - обратный поиск.)
Можно ли добавить переопределение get_queryset() в самом вложенном сериализаторе (перемещение его из вида), чтобы добавить туда фильтр? Я тоже пробовал это, не повезло.
Это то, что я пытался, но она даже не кажется, дозвонились:
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' - это класс на ModelViewSet, а не на Serializer, поэтому его не назовут – Simon