【问题标题】:Divide Serializer Django rest framework划分序列化器 Django rest 框架
【发布时间】:2016-07-07 02:22:12
【问题描述】:

我有一个串行器接收:

{
    "suggestions": [
      {
       "description": "Portugal - Porto",       
       "integration_data": {
        .......
         }
      },
     {
      "description": "Portugal - Porto",
      "another_data":{
       .......
      }
     }]
}

如何让我的序列化程序执行以下操作: 如果integration_data 不是 Null 转到函数 X,我将使用序列化程序的所有逻辑 如果another_data 不是 Null,则转到函数 Y,我将在其中处理序列化程序的所有逻辑。

目前我的序列化器写成:

class SuggestionSerializer(serializers.HyperlinkedModelSerializer):
    integration_data = serializers.DictField(write_only=True, allow_null=True, required=False)
    sponsor_data = serializers.DictField(write_only=True, allow_null=True, required=False)

谢谢

【问题讨论】:

    标签: django serialization django-rest-framework


    【解决方案1】:

    听起来您想使用serializer method field。类似的东西

    class SuggestionSerializer(serializers.HyperlinkedModelSerializer):
        integration_data = = serializers.SerializerMethodField()
        ...
        def get_integration_data(self, obj):
            # Insert logic for generating value of this field here
            ...
            return value
    

    这允许您根据逻辑而不是数据任意生成字段的值。

    【讨论】:

    • SerializerMethodFields 是只读的,我相信作者似乎想要可写字段。
    • 是的,它们是只读的——您是否认为问题的作者想在保存数据之前使用函数处理数据......?不完全确定问题是什么。
    • 我认为是的,但我认为它们不对应于模型字段。也许只是自定义创建...
    • 嗨,我解决了创建 2 个不同的序列化程序
    猜你喜欢
    • 2015-06-29
    • 2020-03-22
    • 2015-10-29
    • 2020-05-08
    • 2018-12-13
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    相关资源
    最近更新 更多