У 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
, а не на Серіалізаторі, саме тому його не викликають