抱歉标题令人困惑,但我不知道如何更好地描述它。
我需要在 Django-Rest-Framework 中使用 PUT 编辑的对象上运行模型函数,该函数使用 PUT 中的一些新数据来计算应该保存在同一模型中的一些新值。
例子:
- 一个项目
{'amount': 2, 'price': 0, 'total': 0}
已经存储在数据库中。 - 然后,我使用 django-rest-framework 使用普通的 PUT 请求将价格更新为 1。
- 该模型有一个辅助函数
update_total()
,我需要调用它来更新数据库中的总字段(在本例中为 2 (2*1))。 - 该项目在数据库中更新,但从 django-rest-framework 返回的响应仍然显示
total=0
. 将对象放在 new 上后,total 将按预期为 2。
我需要来自 PUT 的响应中的响应为 2,而不是在重新抓取对象之后。但是怎么做?
我已经尝试了几件事(都不起作用):
- 将验证器中的 attrs 更新为新值。
- 使用
post_save()
inListCreateAPIView
更新数据。 - 使用
pre_save()
在ListCreateAPIView
- 更新实例
restore_object()
(即使不是为了这个目的)
这看起来像一个错误吗?或者还有什么技巧?