【发布时间】:2015-06-10 18:46:55
【问题描述】:
利用HERE 提供的PUT-as-create mixin 类(AllowPUTAsCreateMixin 类):
class Tree(models.Model):
myfield = models.CharField(max_length=100,unique=True)
species = models.CharField(max_length=100, blank=True, default='')
class TreeSerializer(serializers.ModelSerializer):
class Meta:
model = Tree
fields = ('myfield', 'species')
lookup_field = 'myfield'
class TreeView(viewsets.ModelViewSet, AllowPUTAsCreateMixin):
queryset = Tree.objects.all()
serializer_class = TreeSerializer
lookup_field = 'myfield'
def update(self, request, myfield=None):
return AllowPUTAsCreateMixin.update(self, request, lookup_field='myfield')
class AllowPUTAsCreateMixin(object):
def update(self, request, *args, **kwargs):
lookup_field = kwargs.pop('lookup_field')
以 JSON 格式提交数据时(使用 httpie):
http PUT 127.0.0.1:8000/xxx/trees/123456 对象已创建并公开@/.../trees/{myfield} 完成!
【问题讨论】:
-
视图的
update方法应该采用**kwargs并将**kwargs传递给另一个update方法(而不仅仅是request)。现在它不接受任何参数,所以当传入一个参数时,Python 会抱怨。
标签: python json django-rest-framework