【发布时间】:2017-07-31 06:26:18
【问题描述】:
很抱歉重新发布,但我在第一个问题中犯了很多错误,我认为如果我再次询问它,并提供更多细节和更少的解释错误会更好。
我正在尝试在我的自定义 django rest 框架序列化程序上使用 save 方法。
我在序列化程序中有一个 .create() 方法,我的 views.py 看起来像这样(简化):
def some_method():
validated_data = {
'id': some_integer_id,
'created_at': "some text"}
context_data = {
'user': request.user.id}
obj_serialized = MyCustomSerilizer(data=validated_data, context=context_data)
if obj_serialized.is_valid():
try:
obj_serialized.save()
print Response(obj_serialized.data)
return Response(obj_serialized.data)
except BaseException as e:
raise APIException(detail=e.message)
else:
raise ValidationError(obj_serialized.errors)
这会返回一个异常:
在序列化程序“MyCustomSerializer”上尝试获取字段“created_at”的值时出现 KeyError。 序列化器字段可能命名不正确,并且与 `dict` 实例上的任何属性或键都不匹配。 原始异常文本为:u'created_at'。
这是我的序列化器:
class MyCustomSerializer(serializers.Serializer):
id = serializers.IntegerField()
created_at = serializers.CharField()
def create(self, validated_data):
print validated_data['created_at']
user = self.context.get('user')
return {'id': validated_data['id']}
create 方法的第一行正确打印 created_at 字段的值。我用 dict 发送的数据是 unicode,所以 dict 的键也变成了 unicode,但我怀疑是这种情况,因为我可以打印 valid_data['created_at']。
提前致谢。
【问题讨论】:
标签: python django serialization unicode