如何将变量从save方法传递到Django中查看?

时间:2016-11-07 10:20:45

标签: python django

如果表单已成功保存在数据库中,我需要显示包含信息的消息。由于我的网站中有许多不同的表单,我想编写自定义保存方法,并在每次调用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()

中这样做

1 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是在视图中;毕竟,它是保存对象的视图所以它应该知道它已经这样做了。

但是如果您真的想在save方法中执行此操作,则可以尝试将额外属性附加到模型对象:

def save(self, *args, **kwargs):
    self.is_saved = True
    return super(ModelName, self).save(*args, **kwargs)

现在假设该对象是您传递给模板的对象,您只需检查{% if obj.is_saved %}那里。