如何编写自定义字段序列化程序只更新指定的字段?

时间:2018-01-12 07:42:25

标签: python django django-rest-framework

如何编写自定义字段序列化程序,只更新指定的字段?

我有一个模特:

class TodoList(models.Model):

    content = models.CharField(max_length=64)
    user = models.ForeignKey(to=User, related_name="todolists")
    is_finish = models.BooleanField(default=False)

    ctime = models.DateTimeField(auto_now_add=True, null=True, blank=True)
    uptime = models.DateTimeField(auto_now=True, null=True, blank=True)

    def __str__(self):
        return self.name
    def __unicode__(self):
        return self.name

我只想更新is_finish字段:

class TodoListUpdateIsFinishSerializer(ModelSerializer):
    class Meta:
        model = TodoList
        fields = ["id", "is_finish"]

在我看来:

class TodoListUpdateIsFinishAPIView(RetrieveUpdateAPIView):
    serializer_class = TodoListUpdateIsFinishSerializer
    permission_classes = []
    queryset = TodoList.objects.all()

但是当我访问此视图时,会出现问题:

  

使用名为“pk”的URL关键字参数调用预期视图TodoListUpdateIsFinishAPIView。修复您的网址,或者在视图上正确设置.lookup_field属性。

我尝试添加lookup_field = "id"lookup_field = "pk",但仍无效。

修改 我的网址是下面的:

url(r'^todolist/update_isfinish/$', TodoListUpdateIsFinishAPIView.as_view(), name='todolist-update_isfinish')

1 个答案:

答案 0 :(得分:1)

url(r'^todolist/update_isfinish/(?P<pk>\d+)/$', TodoListUpdateIsFinishAPIView.as_view(), name='todolist-update_isfinish')

使用此URL作为django需要url参数来更新