我在序列化程序上遇到了一些问题。我正在调用post方法,希望它调用序列化程序。另外,我希望将用户发送到序列化程序。我的职位方法是:
def post(self, request, *args, **kwargs):
serializer = ResourceListSerializer(context={'request': request}, data={})
serializer.is_valid(raise_exception=True)
serializer.save(creator=request.user)但它似乎并没有在序列化程序中获取数据。在序列化程序中,self.validated_data似乎是空的。这是序列化程序上的代码:
def save(self, **kwargs):
"""
Update `project` and `resource_type` fields in database.
"""
resources = self.validated_data.get('resources')
if resources is not None and len(resources) > 0:
self.validated_data['project'] = self.validated_data['resources'][0].project
self.validated_data['resource_type'] = self.validated_data['resources'][0].resource_type
try:
project = self.data.get('project')
return super(ResourceListSerializer, self).save(**kwargs)
except:
try:
project = self.validated_data['project']
return super(ResourceListSerializer, self).save(**kwargs)
except:
raise serializers.ValidationError("Resource List should belong to a Project.")对如何正确调用序列化程序有任何建议吗?
发布于 2016-06-07 14:37:13
实例化序列化程序时传递data,而不是context。
def post(self, request, *args, **kwargs):
serializer = ResourceListSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save(creator=request.user)您只需要context来传递额外的上下文。除非您的序列化程序中有访问self.context的自定义代码,否则不需要它。
https://stackoverflow.com/questions/37682058
复制相似问题