django-models - 如果用户选择“保存”按钮,则 Django save() 表单,如果用户选择“计算”按钮,则保存 (commit=false)
问题描述
如果用户选择“保存”按钮并返回到列表视图,我想将表单保存到数据库,如果用户选择“计算”按钮并停留在现在更新的详细视图上,则保存(提交 = false)。我有一些在保存模型时执行的代码,我希望用户能够通过单击“计算”来更新结果而无需写入数据库。如果他们对更新感到满意,那么他们可以单击“保存”按钮并将其写入数据库。
这是模型:
def save(self, *args, **kwargs):
self.propStartBalance = self.some_calc()
self.propAvgResidual = self.some_other_calc()
super(Proposal, self).save(*args, **kwargs)
这是视图:
class ProposalUpdateView(LoginRequiredMixin, UpdateView):
model = Proposal
context_object_name = "proposal_update"
template_name = 'proposal/proposal_create.html'
success_url = reverse_lazy('proposal_list')
form_class = ProposalForm
def form_valid(self, form):
form.instance.proposalOwnerID = self.request.user
return super().form_valid(form)
def save(self,commit=True):
propInstance = super().save(commit= False)
if 'calculateButton' in self.request.POST:
commit = False
if commit:
propInstance.save()
return propInstance
如果用户选择“计算”,我希望执行模型代码,并希望详细模板与新值一起留在屏幕上。任何帮助将不胜感激。
解决方案
推荐阅读
- python - F.write 已返回 'io.UnsupportedOperation: not writable' 我不知道为什么
- c# - 如何在使用 C# 遍历 XML 文档(XML 解析)时提取特定属性
- flutter - 如何在后台运行一些飞镖代码,每 15 秒
- javascript - 关于BST JS递归函数执行的问题
- javascript - Webpack 在 ES5 中生成箭头函数
- r - 如何在R中为不同类型的数据绘制趋势线?
- angular - 新大型项目Angular2上的内联样式代码
- python - Python matplotlib 覆盖轴
- android - 尝试使用 Kotlin 在 android studio 4.1 上创建应用程序时出错
- angular - 如何将 Docker 容器内的 node_modules 表单同步到 node_modules 文件夹外?