在Django Rest Framework中使用序列化程序自定义输出

时间:2014-11-16 14:19:24

标签: django django-rest-framework

我希望在创建用户对象时显示自定义输出,即success=true

这是我现在的代码,它可以正常工作:

class UserViewSet(viewsets.ViewSet):
    queryset = User.objects.all()

    def post(self, request, *args, **kwargs):
        # ... do some stuff
        return Response('some custom response')

我的问题是我还需要一些字段,例如用户名和密码。

我假设我需要一个序列化器。将序列化程序添加到我的ViewSet,现在我有另一个问题。我无法让它返回我的自定义输出。

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'is_staff')

    def restore_object(self, attrs, instance=None):
        #... do some stuff
        return Response('sadf') # obviously this won't work

我试图找到覆盖的方法来控制序列化程序的输出,但我无法找到它。

1 个答案:

答案 0 :(得分:1)

您正在寻找的方法是to_native。

class UserSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'is_staff')  


     def to_native(self, obj):
         return 'some custom response'

请注意,to_native中的to_representation已重命名为{{1}}