0
利用的PUT-作为创建混入类提供HERE(类AllowPUTAsCreateMixin):Django的REST framwork 3.1 - PUT-作为创建混合类,定制lookup_field
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 < tree.json创建
对象和暴露@/... /株/ {} MyField的
完成!
你的视图的'update'方法应该使用'** kwargs'并将'** kwargs'传递给另一个'update'方法(而不是'request')。现在它不需要任何参数,所以Python在通过时抱怨。 –