2016-12-24 9 views
0

私は家族の個人情報を追加する簡単なフォームを持っています。いつか1つのサブミットだけで人の2つのインスタンスを保存することがあります。たぶん私のマウスに問題があり、ワンクリックの代わりにダブルクリックする(それにはいくつかの問題があります)。私はこれが可能ではないと思うし、djangoはフォームのインスタンスからの1つの投稿要求を受け入れ、それ以上(おそらく受け入れる)は受け付けません。コードに問題がある場合はどうすればよいですか?それが私のコードの問題なら、なぜそれがしばらく起こるのですか?いつか二回保存されますこれが唯一のビューではありません。 ワンクリックで複数の投稿を避けるには?

house = get_object_or_404(House, id=code) 
if request.method == 'POST': 
    form = ParentForm(request.POST) 
    if form.is_valid(): 
     # save it if it's valid 
     parent = form.save(commit=False) 
     if parent.living == 0: 
      parent.in_family = 0 
     if not parent.guardian: 
      parent.save() 
     if parent.guardian and parent.in_family: 
      parent.save() 

は私がクリアするためにはDjango 1.8

Editを使用しています。たぶんdjangoのバグです

+0

おそらくあなたのビューは、コードのどの部分でもHttpRedirectを自分自身に返しますか? – neverwalkaloner

+0

いいえ、そうではありません。それはどこかに行く –

答えて

0

この問題を解決するには、まず対応するデータベーステーブルに一意の制約を作成する必要があります。実際のソリューションは、データベーススキーマに基づいています。 parentテーブルにどのフィールド(列)があるのか​​わからない場合は、これらの2つのフィールドに一意制約を追加することから始めることができます:child_idparent_name

もう1つの問題は、2回目のクリックを防止する必要があることです。したがって、基本的にJavaScriptコードを書く必要があります。送信ボタンのonClickイベントを待ち受けます。ボタンがクリックされると、リスナーはそのボタンにdisabled属性を設定し、それ以上のクリックを防止します。

関連する問題