PUT/PATCH动作后的Django REST框架
问题描述:
我想在api的PUT/PATCH过程完成后做一些动作。PUT/PATCH动作后的Django REST框架
我的API更新了一个模型的某些值,但是在这些更新之后,我想更新另一个模型值来获取API发送的信息。
例如:
class Model1(models.Model):
name = models.CharField(max_length=140)
qty = models.IntegerField(default=0)
class Model2(models.Model):
val = models.CharField(max_length=15)
我有这样的车型,所以,我用PATCH调用API更新Model1.qty值。然后我想更新Model2.val值与调用我的API的PATCH数据,实际上等于Model1.qty的值
我不知道如何做到这一点,但我认为我应该重写“更新“ 方法。
def update(self, request, *args, **kwargs):
...??
def partial_update(self, request, *args, **kwargs):
...??
任何想法?
注意我使用HyperlinkedModelSerializers,ModelViewSets和路由器使我的API工作。
答
的看法的post_save
方法存在正是这个原因。 Django的REST框架文档doesn't cover it well,但它是一个被称为有两个参数,obj
(所保存的对象)和created
钩(真为POST/PUT,为创建,假的PUT,作为更新/补丁) 。
您可以访问与self.request.DATA
发送的数据,它应该让你修改保存的对象,以满足您的需求。