对于令人困惑的标题感到抱歉,但我不知道如何更好地描述它。
我需要在Django-Rest-Framework中使用PUT在我正在编辑的对象上运行模型函数,它使用来自PUT的一些新数据来计算它应该在同一模型中保存的一些新值。 / p>
示例:
{'amount': 2, 'price': 0, 'total': 0}
项已存储在数据库中。 update_total()
的辅助函数,我需要调用它来更新数据库中的总字段(在本例中为2(2 * 1))。total=0
。获取新对象后,总计将按预期为2。我需要在PUT的响应中响应为2,而不是在对象的重新调整之后。但是如何?
我尝试了几件事(都不起作用):
post_save()
中的ListCreateAPIView
更新数据。pre_save()
ListCreateAPIView
restore_object()
中的实例(即使不是为此目的)这看起来像个bug吗?还是有另一招?
答案 0 :(得分:1)
我找到了一个解决方案,但感觉有些脏......
在我的序列化程序restore_object中,我放了这样的代码:
new_values = instance.update_counters()
for k, v in new_values.items():
self.data[k] = v
在我的模型update_counters()函数中,我正在返回一个我改变的词典..