我在view.py中使用Django Rest Framework的perform_update事件上使用.save(field ='value')时出现了一些奇怪的行为。我正在更新一个特定的字段,添加逻辑并向串行器添加额外的数据,然后根据客户的响应/ api调用将数据保存到模型/数据库中。Djano Rest框架 - 更新时保存额外数据
每次我通过设置PUT(更新)为'yes'然后'no'来测试时,.save()随机地工作。我想有时候save()发生在变量被设置并传递给.save()之前。我对Django和Python相当陌生,所以我可能没有正确地做到这一点。我也尝试声明变量,然后将这些变量传递到.save(field ='created variable'),但我仍然得到相同的奇怪行为。
这里是我的代码:
def perform_update(self, serializer):
# Change depending on customer's repsonse.
# customer_acceptance is "yes" or "no" from front end
print(serializer.instance.customer_acceptance)
if serializer.instance.customer_acceptance == 'yes':
serializer.instance.creditor_status = 'accepted'
serializer.instance.agreement_acceptance = 'yes'
if serializer.instance.customer_acceptance == 'no':
serializer.instance.creditor_status = 'customer_rejected'
serializer.instance.agreement_acceptance = 'no'
if serializer.is_valid():
print(serializer.instance.creditor_status)
serializer.save(
customer_response_date = datetime.datetime.now()
)