2017-01-06 85 views
0

我创建一个聊天应用程序,并有2场,收件人的姓名和身体, 我想疏通全身是没有形式出现后清零接收者的姓名提交comment场,我怎么能做到这一点?如何在提交后只清除一个特定的表单域?

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

一旦形式submited,'comment'领域应清除 – Lindow

回答

2

您在这里有一些误解。提交表单并在web应用程序处理后,你不应该有任何的当前请求继续了,但你应该送GET请求到另一个网页。因此,提交后无法将表单字段设置为空。

我的建议是,当你的表单被提交时,你重定向到同一页面,但是用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

嗯,这就是我想太多,我想检查,如果有可能,因为后来我想补充阿贾克斯,所以形式不每次重定向和'comment'字段得到重置。 – Lindow

+1

然后发送数据使用ajax,在它返回时使用javascript来清理注释。 –