2016-11-07 8 views
0

フォームがデータベースに正常に保存された場合は、情報を含むメッセージを表示する必要があります。私のウェブサイトには多くの異なるフォームがあるので、saveメソッドが呼び出されるたびにカスタムsaveメソッドと変数を渡して表示する必要があります。変数をsaveメソッドからDjangoに渡すには?

保存時にグローバル変数を作成するためにグローバルを使用しようとしましたが、その変数を表示してテンプレートに渡しました。

def save(self, *args, **kwargs): 
    global some_var 
    some_var = True 
    super(ModelName, self).save() 

しかし、私はモデルを保存した後にsome_varを表示することはできません。変数をグローバルにするのはベストプラクティスではありませんが、それ以上のことは何も分かりません。

UPDATE:

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

ビューコードを追加できますか? –

+1

「ベストプラクティス」ではないだけでなく、Djangoのような環境では危険です。 **それをしません**。しかし、私たちが正しく答えるために実際にやっていることについてもっと多くの情報を表示する必要があります。 –

+0

私は、10のフォームビューと、すべてのisnt DRYにコードを追加するようなものがあります。 – amonowy

答えて

1

これを行う最良の方法はビューです。結局のところ、オブジェクトを保存しているビューなので、そうしたことを知るべきです。あなたが本当に保存する方法でこれを行うにしたい場合は

しかし、あなただけのモデルオブジェクトに追加の属性を付加しようとすることができ:今すぐオブジェクトは、あなたのテンプレートに渡しているものであると仮定し

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

あなたは単に{% if obj.is_saved %}にチェックすることができます。

+0

これは私が感謝を達成しようとしたものです:) – amonowy

関連する問題