gpt4 book ai didi

python - Django Rest Framework - 使用 model.ModelViewSet 更新模型

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:05 24 4
gpt4 key购买 nike

如何使用 Django Rest Framework 更新模型?我有以下模型/序列化器/ View 定义:

foo/模型.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 = {'title':'New Foo Item', 'id':1}
$http.post(`/api/v1/foo/`, 数据)

我已经尝试使用 $http.put$http.patch 并且两者都会导致 405“方法不允许”错误。我也试过在 url 中使用这个对象 id,但没有成功:

$http.post(`/api/v1/foo/${data.id}/`, data );

最佳答案

答案是使用补丁。请小心按照 Django 的要求包含尾部斜线。我在第一次尝试 patch 时没有包含尾部斜杠,这导致了“405 Method not allowed”响应。

if ( data.id ) {
# update
$http.patch(`/api/v1/foo/${data.id}/`, data );
}
else {
# create
$http.post(`/api/v1/foo/`, data );
}

关于python - Django Rest Framework - 使用 model.ModelViewSet 更新模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42091013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com