簡體   English   中英

如何將保存方法中的變量傳遞給Django中的視圖?

[英]How to pass variable from save method to view in Django?

如果表單已成功保存在數據庫中,我需要顯示帶有信息的消息。 由於我的網站中有許多不同的形式,因此我想編寫自定義保存方法,並在每次調用保存方法時傳遞變量以查看。

我嘗試使用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()中做到這一點

最好的方法是在視圖中。 畢竟,正是視圖保存了對象,因此它應該知道它已經保存了對象。

但是,如果您確實想在save方法中執行此操作,則可以嘗試僅將額外的屬性附加到模型對象:

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

現在假設該對象是您要傳遞到模板的對象,您只需{% if obj.is_saved %}檢查{% if obj.is_saved %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM