Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django ModelSerializer.update()和ModelViewSet.update()之间的差异_Django_Python 3.x_Django Rest Framework_Django Views_Django Serializer - Fatal编程技术网

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

Django ModelSerializer.update()和ModelViewSet.update()之间的差异,django,python-3.x,django-rest-framework,django-views,django-serializer,Django,Python 3.x,Django Rest Framework,Django Views,Django Serializer,我发现ModelSerializer和ModelViewSet都有update()方法,我认为两者几乎相同。对吗? from rest_framework import serializers from rest_framework import viewsets class FooSerializer(serializers.ModelSerializer): class Meta: model = Foo fields = '__all__'

我发现
ModelSerializer
ModelViewSet
都有
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而不使用另一个来更新模型实例吗?

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

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