gpt4 book ai didi

Django Rest框架带有get和post的额外序列化器字段

转载 作者:行者123 更新时间:2023-12-03 03:22:36 25 4
gpt4 key购买 nike

我想序列化模型并包含额外的字段。我想使用这个序列化器来显示列表、详细信息和创建 View 。在序列化器中,我使用 create、update 和 get_field 方法来自定义逻辑。

class ExampleSerializer(serializers.ModelSerializer):
field = serializers.CharField()

class Meta:
model = Example
fields = ("field", ...)

当我添加新对象时,一切都是正确的(我可以验证自定义字段数据),但是当我获取对象时,响应中不存在“字段”。

编辑:我想在序列化器类上设置自定义方法来获取字段。这对我来说是更好的逻辑解决方案,然后在模型上设置自定义方法。

为什么会这样?是否存在更好的解决方案(我不想使用 SerializerMethodField)?

最佳答案

该字段不是模型的一部分,因为它会出现错误。您可以将该字段设置为 write_only=True。假设字段是额外字段。

class ExampleSerializer(serializers.ModelSerializer):
field = serializers.CharField(write_only=true)

class Meta:
model = Example
fields = ("field", ...)

或者您可以给出字段跨池塘到哪个字段的源值。

  • 我们可以使用该字段名称定义属性方法。您可以将该字段包含在序列化器中,作为只读您可以为此返回的任何数据

    class Example(model.MOdels):
    @property
    def field(self):
    return #whatever you want to return
  • 您可以使用 Serilizermethod 字段。

     class ExampleSerializer(serializers.ModelSerializer):
    field = serializers.serializerMethod()

    class Meta:
    model = Example
    fields = ("field", ...)
    def get_field(self, obj):
    return obj.data
  • 关于Django Rest框架带有get和post的额外序列化器字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112956/

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