Django REST序列化单个模型实例

use*_*893 3 python django django-rest-framework

我正在尝试序列化类型的模型实例,Shift但我收到一个错误.

'Shift'对象没有属性'get'

shift = models.Shift.objects.get(pk=8)
ser = serializers.ShiftSerializer(many=False, data=shift)
ser.is_valid()
Run Code Online (Sandbox Code Playgroud)

ShiftSerializer是ModelSerializer.如果我使用filterall和获得班次,这是有效的many=True.

解:

shift = models.Shift.objects.get(pk=8)
ser = serializers.ShiftSerializer(shift)
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 8

data参数用于反序列化,而不是序列化.您应该将模型实例作为位置arg传递.

obj = serializers.ShiftSerializer(shift)
Run Code Online (Sandbox Code Playgroud)

注意,不需要指定many = False,这是默认值.另外,调用is_valid()你从模型实例构造的序列化器是没有意义的; 再次,这是反序列化.