【问题标题】:Django REST framwork 3.1 - PUT-as-create mixin class, custom lookup_fieldDjango REST framework 3.1 - PUT-as-create mixin 类,自定义lookup_field
【发布时间】: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


【解决方案1】:

我的错误是由于对正确使用 kwargs 的理解不足。 我在问题帖子中更正了我的代码。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    相关资源
    最近更新 更多