[英]Django REST framwork 3.1 - PUT-as-create mixin class, custom lookup_field
Making use of the PUT-as-create mixin class provided HERE (class AllowPUTAsCreateMixin ): 利用此处提供的PUT-create-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')
when submitting data as JSON (using httpie): 当将数据提交为JSON(使用httpie)时:
http PUT 127.0.0.1:8000/xxx/trees/123456 < tree.json http PUT 127.0.0.1:8000/xxx/trees/123456 <tree.json
Object is created and exposed @/.../trees/{myfield} 对象已创建并公开@ / ... / trees / {myfield}
Done! 做完了!
My mistake was from poor understanding from making correct use of the kwargs. 我的错误是由于对正确使用kwargs的理解不足。 I corrected my code in the question post.
我在问题帖中更正了我的代码。
Thanks! 谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.