【发布时间】:2019-11-14 13:46:28
【问题描述】:
我正在使用 Django 2.x 和 Django REST 框架
class ComponentDataSerializer(serializers.ModelSerializer):
class Meta:
model = ComponentData
fields = [
'id',
'analytics_type'
]
class ComponentSerializer(serializers.ModelSerializer):
data = ComponentDataSerializer(many=True)
class Meta:
model = Component
fields = [
'id',
'name',
'group',
'data',
]
def validate(self, attrs):
print('validate data: {}'.format(attrs))
return attrs
对于POST 请求,validate() 中的attrs 是
validate data: OrderedDict([('name', 'Component Test'), ('group', <AnalyticsGroup: Chart>), ('data', [OrderedDict([('analytics_type', <AnalyticsType: Bar Chart>)])])])
在使用PATCH 请求时,data 属性为空OrderedDict
validate data: OrderedDict([('group', <AnalyticsGroup: Chart>), ('data', [OrderedDict()])])
每个请求中的数据负载都是一样的。
name: "Component Test"
group: "2"
data[0]analytics_type: "3"
data[0]analytics_sub_type: "2"
data[0]query: "9"
其中analytics_type、analytics_sub_type 和query 的每个字段的值分别是pk。
【问题讨论】:
标签: django django-rest-framework django-serializer