gpt4 book ai didi

python - Django Rest 框架中的 get_FIELD_serializer

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:28 25 4
gpt4 key购买 nike

我处于一种情况,我想根据条件更改序列化器字段。条件出现在哪里并不重要,但我希望能够在序列化器字段之间切换,如下例所示:

class EntrySerializer(serializers.ModelSerializer):
# author defined from ModelSerializer

def get_author_serializer(self):
request = self.context.get('request')
GET = getattr(request, 'GET', {})
if request and GET and GET.get('include_author')=='true':
author_serializer = UserSerializer()
else:
author_serializer = serializers.PrimaryKeyRelatedField(
read_only=True, default=serializers.CurrentUserDefault()
)
return author_serialize

当然,这不起作用,因为 get_FIELD_serializer 不存在,但我正在寻找可以做到这一点的最简单的解决方案。

我曾尝试将 author 写为属性,但没有成功。

我知道我可以编写多个 EntrySerializer 并使用 get_serializer_class 但对于如此小的自定义来说,样板代码太多了。

最佳答案

如果您只想根据条件更改序列化器的字段,您可以执行类似的操作。

class MySerializer(serializers.ModelSerializer):
author = serializers.SerializerMethodField()

def get_author(self, instance):
# your condition here
if your_condition:
return instance.author
return 'hello'

检查 SerializerMethodField 的文档

https://www.django-rest-framework.org/api-guide/fields/#serializermethodfield

关于python - Django Rest 框架中的 get_FIELD_serializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56689376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com