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中使用它。
但是,如果在序列化程序中使用它,则可以在应用程序的整个视图中持续使用它