如何使用Django Rest Framework更新模型?以下是我的模型/序列化器/视图定义:
foo/models.py
在这个项目中,我使用了Angular,并且通过以下方式创建了一个新记录:
data = {'title':'New Foo Item'} $http.post(`/api/v1/foo/`, data );
那么如何更新一条记录呢?以下代码会导致创建一条新记录:
data = {'title':'New Foo Item', 'id':1} $http.post(`/api/v1/foo/`, data )
我已经尝试过使用 `$http.put` 和 `$http.patch` 方法,但都返回 405 "Method not allowed" 错误。我还尝试在 URL 中使用对象 ID,但没有成功。
foo/models.py
class FooBar (models.Model):
title = models.CharField(max_length=255,null=False)
def __unicode__(self):
return self.title
foo/serializers.py
from rest_framework import serializers
from foo.models import FooBar
class FooBarSerializer(serializers.ModelSerializer):
id = serializers.ReadOnlyField()
class Meta:
model = FooBar
fields = ('id','title')
read_only_fields = ['id']
foo/views.py
from rest_framework import viewsets
from foo.models import FooBar
from foo.serializers import FooBarSerializer
class FooViewSet(viewsets.ModelViewSet):
queryset = FooBar.objects.order_by('id')
serializer_class = FooBarSerializer
在这个项目中,我使用了Angular,并且通过以下方式创建了一个新记录:
data = {'title':'New Foo Item'} $http.post(`/api/v1/foo/`, data );
那么如何更新一条记录呢?以下代码会导致创建一条新记录:
data = {'title':'New Foo Item', 'id':1} $http.post(`/api/v1/foo/`, data )
我已经尝试过使用 `$http.put` 和 `$http.patch` 方法,但都返回 405 "Method not allowed" 错误。我还尝试在 URL 中使用对象 ID,但没有成功。
$http.post(`/api/v1/foo/${data.id}/`, data );
put
或patch
用于进行完整或部分更新。 - Deep 3015