2014-10-28 105 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發送的數據,它應該讓你修改保存的對象,以滿足您的需求。