我正在尝试创建一个异步视图来解决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
我尝试在视图代码中在Serializer之前加上await关键字,并将async属性添加到get_custom_field方法中(使用db查询中的sync_to_async运算符)。但没有任何结果。
有人知道如何解决这个特定的问题吗?