2017-01-06 6 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

После того, как форма отправлена, поле 'comment' должно быть очищено – Lindow

ответ

2

У вас есть некоторые недоразумения здесь. После того, как форма будет отправлена ​​и обработана в веб-приложении, вы больше не должны продолжать ничего для текущего запроса, но вы должны отправить запрос 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

Хм, это то, что я тоже думал, я хотел проверить, возможно ли это, так как позже я хотел бы добавить ajax, поэтому форма не перенаправляется каждый раз и поле 'comment' get сбрасывается. – Lindow

+1

Затем отправьте данные, используя ajax, после его возврата используйте javascript для очистки комментария. –

Смежные вопросы