Использование prefetch_related Django в сложных запросах - PullRequest
0 голосов
/ 14 июля 2020

У меня есть следующий базовый c запрос в моем APIView:

categories = UserCategorizationType.objects.all()

В сериализаторе я настроил активную загрузку для всех внешних ключей и отношений «один ко многим». Однако теперь мне нужно настроить нетерпеливую загрузку для поля, которое добавляется сериализатором UserCategorizationType. По сути, для каждого результата в категориях я хочу добавить поле под названием «possibleValues». Я делаю это в своем сериализаторе так:

class UserCategorizationTypeWithApprovedValuesSerialiser(BaseSerializer):
   possibleValues = serializers.SerializerMethodField()

   def get_possibleValues(self, categorizationType_):
       #-- get all approved values and user's own values
       values = UserCategorizationValue.objects.filter(
            Q(categorizationType=categorizationType_) &
            (
                Q(categorizations__in=UserCategorization.objects.filter(author=self.__userProfile)) | Q(state="APPROVED")
            )
        ).distinct()

       serializer = UserCategorizationValueSerializerValueOnly(values, many=True)
       return serializer.data

Мой вопрос в том, как использовать prefetch_related для такого рода запросов? Я хочу, чтобы этот запрос в идеале оставался в сериализаторе, потому что существует несколько представлений, которые получают категории, и я хочу инкапсулировать способ добавления возможных значений в категорию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...