2015-06-10 17 views
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的

完成!

+0

你的视图的'update'方法应该使用'** kwargs'并将'** kwargs'传递给另一个'update'方法(而不是'request')。现在它不需要任何参数,所以Python在通过时抱怨。 –

回答

0

我的错误是来自正确使用kwargs的理解不足。 我在问题文章中更正了我的代码。

谢谢!

相关问题