我和您以前有相同的问题,但是当我深入研究rest_framework的源代码时,我得到了以下发现,希望对您有所帮助:
对于问题1)
这个问题与HTTP动词有关。
PUT:PUT方法用请求有效负载替换目标资源的所有当前表示形式。
PATCH:PATCH方法用于对资源进行部分修改。
一般而言,使用update来检查客户端向视图提交数据时是否需要模型中的字段进行字段验证。
例如,我们有一个update这样的模型,请注意partial_update和name这两个字段都是必填字段(不为null且不为空白)。
class Book(models.Model):
name = models.CharField('name of the book', max_length=100)
author_name = models.CharField('the name of the author', max_length=50)
# Create a new instance for testing
Book.objects.create(name='Python in a nut shell', author_name='Alex Martelli')
在某些情况下,我们可能只需要更新模型中的部分字段,例如,我们只需要更新partial_update中的update字段即可。因此,在这种情况下,客户端将只向视图提交具有新值的name字段。 从客户端提交的数据可能如下所示:
{"pk": 1, name: "PYTHON IN A NUT SHEL