Асинхронный просмотр с сериализатором Django 3.1

#django #asynchronous #django-rest-framework #python-asyncio #django-serializer

#django #асинхронный #django-rest-framework #python-asyncio #django-сериализатор

Вопрос:

Я пытаюсь создать асинхронное представление для решения конечной точки с помощью Django 3.1.

У меня есть AsyncView, и в этом представлении у меня есть следующие строки кода :

 try:
    db_result= await sync_to_async(list)(Plan.objects.filter())
    serializer =  MySerializer(db_results, many=True)
    return serializer.data
except Exception:
    # Handle Exception Code
 

В моем сериализаторе у меня есть настраиваемое поле. Его данные извлекаются при выполнении других запросов к базе данных с использованием его свойства obj. Здесь у меня возникают некоторые проблемы, поскольку это асинхронный контекст.

Код сериализатора:

 MySerializer(serializers.ModelSerializer):

    custom_field = serializers.SerializerMethodField(required=False)

    def get_custom_field(self, obj):
        try:
            # This is failing, is not retrieving data from DB since it's async context
            related_stuff = obj.related_stuff.filter(filter_condition=filter_condition)
            # More code after this
            .
            .
            .
            .
            return custom_field_object
        except Exception:
            return None

 

Я попытался поместить ожидание перед сериализатором в свой код представления и добавить свойство async в метод get_custom_field (с помощью оператора sync_to_async в запросе к БД). Ничего не получил.

Кто-нибудь знает, как решить эту конкретную проблему?