2014-10-28 69 views
0

我想在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工作。

回答

0

的看法的post_save方法存在正是这个原因。 Django的REST框架文档doesn't cover it well,但它是一个被称为有两个参数,obj(所保存的对象)和created钩(真为POST/PUT,为创建,假的PUT,作为更新/补丁) 。

您可以访问与self.request.DATA发送的数据,它应该让你修改保存的对象,以满足您的需求。