mar*_*ise 4 django google-app-engine django-rest-framework google-cloud-datastore
我想使用执行更新或创建中django-rest-framework,通过传递与否的id领域.我有这个型号
class Etiqueta(models.Model):
name_tag = models.CharField(max_length=200, blank=False, null=False)
description_tag = models.TextField(max_length=500, blank=False, null=False)
def __unicode__(self):
return self.name_tag
Run Code Online (Sandbox Code Playgroud)
在django-rest-framework我有这个序列化器
from myapp.modulos.estado_1.models import Etiqueta
from rest_framework import serializers, viewsets
# Serializers define the API representation.
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Etiqueta
fields = (
'id',
'name_tag',
'description_tag'
)
# ViewSets define the view behavior.
class TagViewSet(viewsets.ModelViewSet):
queryset = Etiqueta.objects.all()
serializer_class = TagSerializer
Run Code Online (Sandbox Code Playgroud)
通常当我创建一个对象时,我执行一个POST没有的URL /:id,但如果我有一个具有本地ID的对象,我希望他在REST具有相同id(远程id)的情况下创建,django覆盖我的本地id并创建一个新的.有谁知道如何实现这一目标?还需要提及的是我的工作是非常重要的google-app-engine,google-cloud-datastore和django-dbindexer.
此代码适用于您的情况 -
class TagViewSet(viewsets.ModelViewSet):
queryset = Etiqueta.objects.all()
serializer_class = TagSerializer
def get_object(self):
if self.request.method == 'PUT':
obj, created = Etiquetta.objects.get_or_create(pk=self.kwargs.get('pk'))
return obj
else:
return super(TagViewSet, self).get_object()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2724 次 |
| 最近记录: |