У меня есть следующий базовый 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 для такого рода запросов? Я хочу, чтобы этот запрос в идеале оставался в сериализаторе, потому что существует несколько представлений, которые получают категории, и я хочу инкапсулировать способ добавления возможных значений в категорию.