所以我有一个ObjectSerializer,它有一个模型Object的'id'字段的字段(它是一个ModelSerializer)。这是正在发生的事情:
serializer = ObjectSerializer(data=request.DATA)
if serializer.is_valid():
some_dict = {'field': serializer.data['field']}
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
响应的'id'字段由于某种原因返回null
?当我用some_dict删除该行时,响应返回id okay。
不确定这里发生了什么。任何指针都会非常感激。
答案 0 :(得分:1)
这很奇怪。 default implementation of the rest_framework.serializers.BaseSerializer
data
property只是懒惰地填充(私有)_data
成员并返回该成员。连续两次调用它 - 这基本上就是你正在做的 - 应该第二次返回相同的值。
你能否将其减少到一个失败的测试用例和submit an issue on Github? - 这确实会有所帮助。
感谢您的报告。
As Tom noted in the discussion您看到了这个问题,因为当您访问数据时save()
尚未调用,因此未设置id
。 - 在data
之后将通话移至save()
,您将获得所需的结果。
除此之外,行为现在已经改变,以便在调用data
时清除缓存的save()
- 这在master
中得到修复,应该在下一个版本中。