在 Django Rest Framework 中创建或更新(使用 PUT) [英] Create or Update (with PUT) in Django Rest Framework
问题描述
我有一个有主键的模型 id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
.
I have a model which has has an primary key id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
.
当一个 PUT
请求被发送到资源的端点 /api/v1/resource/<id>.json
我想创建 如果资源不存在,则使用提供的 id
的新资源.
When a PUT
request is sent to the resource's endpoint /api/v1/resource/<id>.json
I would like to create a new resource with the supplied id
if the resource does not already exist.
注意:我使用 ModelViewSet
和 ModelSerializer
最优雅的方法是什么?
推荐答案
我最终覆盖了 ModelViewSet
中的 get_object()
方法:
I ended up overriding the get_object()
method in my ModelViewSet
:
class ResourceViewSet(viewsets.ModelViewSet):
"""
This endpoint provides `create`, `retrieve`, `update` and `destroy` actions.
"""
queryset = Resource.objects.all()
serializer_class = ResourceSerializer
def get_object(self):
if self.request.method == 'PUT':
resource = Resource.objects.filter(id=self.kwargs.get('pk')).first()
if resource:
return resource
else:
return Resource(id=self.kwargs.get('pk'))
else:
return super(ResourceViewSet, self).get_object()
也许有更优雅的方式来做到这一点?
Perhaps there's a more elegant way of doing this?
这篇关于在 Django Rest Framework 中创建或更新(使用 PUT)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!