首页 文章

Django使用get和post来休息框架额外的序列化器字段

提问于
浏览
5

我想序列化一个模型并包含额外的字段 . 我想使用此序列化程序来获取列表,详细信息和创建视图 . 在serialializer中,我使用create,update和get_field方法来定制逻辑 .

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

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

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

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

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

1 回答

  • 1

    该字段不是模型的一部分,因为它出现了错误 . 您可以使该字段为write_only = True.Suppose字段为额外字段 .

    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
    

相关问题