如果表单已成功保存在数据库中,我需要显示包含信息的消息。由于我的网站中有许多不同的表单,我想编写自定义保存方法,并在每次调用save方法时传递变量以查看。
我尝试在保存时使用global创建全局变量,然后在视图中捕获它并传递给模板。
def save(self, *args, **kwargs):
global some_var
some_var = True
super(ModelName, self).save()
但是在保存模型后,这不允许我在视图中获取some_var。我理解,将变量变为全局并不是最佳实践,但却无法找到更好的结果。
更新:
views.py
from .forms import modForm
def func(request, passed_id):
mod_obj = ModelName.objects.get(pk=passed_id)
if request.method == 'POST':
mod_form = modForm(request.POST, instance = mod_obj)
mod_form.save()
return render(request, 'template.html')
我需要在保存表单时将变量传递给模板。但是因为我有许多形式在视图中写这个并不是DRY。多数民众赞成为什么我想在自定义save()
中这样做答案 0 :(得分:2)
执行此操作的最佳方法是在视图中;毕竟,它是保存对象的视图所以它应该知道它已经这样做了。
但是如果您真的想在save方法中执行此操作,则可以尝试将额外属性附加到模型对象:
def save(self, *args, **kwargs):
self.is_saved = True
return super(ModelName, self).save(*args, **kwargs)
现在假设该对象是您传递给模板的对象,您只需检查{% if obj.is_saved %}
那里。