2017-01-06 9 views
0

私はチャットアプリケーションを作成していますが、受信者の名前と本文の2つのフィールドがあります commentフィールドをクリアしたいのですが、フォーム送信後に受信者の名前をクリアせずにどうすればいいですか?送信後に特定のフォームフィールドを1つだけクリアするにはどうすればよいですか?

views.py

if request.method == 'POST': 
    form = userCommentForm(request.POST, request.FILES) 
    if form.is_valid(): 
     form.save(client=request.user) 
     > clear comment field. 

forms.py( "労働者" フィールドには、受信者の名前です。)

class userCommentForm(forms.Form): 
    worker = CommaSeparatedUserField(label=_(u"worker"), widget=forms.TextInput(attrs={'readonly': 'readonly'})) 
    comment = forms.CharField(label=_(u"comment"), widget=forms.Textarea()) 

    def save(self, client): 
     workers = self.cleaned_data['worker'] 
     comment = self.cleaned_data['comment'] 
     message_list = [] 
     for worker in workers: 
      msg = userComment(client=client, worker=worker, comment=comment,) 

      if None is not None: 
       msg.parent_msg = None 
       None.save() 
      msg.save() 
      message_list.append(msg) 

     return message_list 
     form.save(client=request.user) 

任意の提案ですか?

+0

「クリアボディフィールド」とはどういう意味ですか? –

+0

フォームが提出されたら、 'comment'フィールドをクリアしなければなりません – Lindow

答えて

2

ここでは誤解があります。フォームがWebアプリケーションで送信され、処理された後は、現在のリクエストについて何も続行しないでください。ただし、GETリクエストを別のWebページに送信する必要があります。したがって、送信後にフォームフィールドを空に設定することはできません。

あなたのフォームが送信されると、同じページにリダイレクトされますが、GETパラメータが送信された名前が格納されていると、最初のパラメータとしてフォームにフィードが表示されます。

def view_method(request): 
    default_receiver = request.GET.get('receiver', None) 
    form = userCommentForm(request.POST or None, 
          request.FILES or None, 
          initial={'worker': default_receiver}) 
    if form.is_valid(): 
     form.save(client=request.user) 
     current_receiver = form.cleaned_data['worker'] 
     response = redirect('current-page-url-name') 
     response['Location'] += '?receiver=%s' % current_receiver 
     return response 
+0

うーん、私も考えていました。後で私はajaxを追加したいので、フォームが毎回リダイレクトされないので、 'comment'フィールドはリセットされます。 – Lindow

+1

それから、データの使用ajaxを返します。戻り値はJavaScriptを使用してコメントを消去します。 –

関連する問題