2010-07-27 2 views
1

У меня есть форма MyForm, которую я обновляю с помощью ajax, когда пользователь заполняет ее. У меня есть метод просмотра, который обновляет форму, создавая MyForm от request.POST и подавая его обратно.Django: построить форму без проверки полей?

def update_form(request): 
    if request.method == 'POST': 
     dict = {} 
     dict['form'] = MyForm(request.POST).as_p() 
     return HttpResponse(json.dumps(dict), mimetype='application/javascript') 
    return HttpResponseBadRequest() 

Однако это вызывает подпрограмму очистки/проверку, и я не хочу, чтобы сообщения об ошибках пользователя, пока они на самом деле активно нажали «отправить».

Итак, вопрос в том, как я могу построить django.forms.Form из существующих данных, не вызывая проверки?

+0

Что? Метод POST не может быть вызван до отправки кликов. О чем ты говоришь? Можете ли вы быть более конкретным ** на то, что вы видите именно в какой последовательности? –

ответ

3

Проверка никогда не вызывает, пока вы не позвоните form.is_valid().

Но, как я предполагаю, вы хотите, чтобы ваша форма заполнялась данными типов данных, пока пользователь не нажимает кнопку submit.

def update_form(request): 
    if request.method == 'POST': 
     if not request.POST.get('submit'): 
      dict = {} 
      dict['form'] = MyForm(initial = dict(request.POST.items())).as_p() 
      return HttpResponse(json.dumps(dict), mimetype='application/javascript') 
     else: 
      form = MyForm(request.POST) 
      if form.is_valid(): 
       # Your Final Stuff 
       pass 
    return HttpResponseBadRequest() 

Счастливое кодирование.

+1

Спасибо, использование «initial =» было именно тем, что мне было нужно. – kdt

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