ModelSerializer.update()和ModelViewSet.update()之间的差异

时间:2017-11-17 02:28:40

标签: django python-3.x django-rest-framework django-views django-serializer

我发现ModelSerializerModelViewSet都有update()方法,我认为两者几乎相同。这是正确的吗?

from rest_framework import serializers
from rest_framework import viewsets


class FooSerializer(serializers.ModelSerializer):
    class Meta:
        model = Foo
        fields = '__all__'

    def update(self, instance, validated_data):
        # update of model instances
        instance.save()
        return instance


class FooModelAPI(viewsets.ModelViewSet):
    serializer_class = MySerializer
    queryset = my_queryset

    def update(self, request, *args, **kwargs):
        # updateds model instances and save
        return Response("OK")

在上面的代码片段中,我是否可以使用ModelSerializer或ModelViewSet来更新模型实例?

1 个答案:

答案 0 :(得分:2)

如果将update()方法放在视图中,它将绑定到视图本身;意味着您只能在特定网址中使用它。 但是,如果您在序列化程序中使用它,则可以在整个应用程序的视图中持久使用它。