django формы is_valid () всегда возвращает false - PullRequest
0 голосов
/ 06 декабря 2010

У меня действительно раздражающая проблема, когда form.is_valid() всегда возвращает false в одной из моих форм, и это происходит только тогда, когда я вручную определяю поля в форме модели и, в частности, использую ModelChoiceField и ModelMultipleChoiceFields, передавая свои собственные пользовательские наборы запросов

location = forms.ModelChoiceField(required=False, widget = forms.Select(), queryset = Location.objects.none())

Я не могу найти много хороших документов о ModelForm.is_valid(), и, по сути, если я не называю это, все работает нормально. Я доволен этим, за исключением того факта, что каждый пример форм Django делает этот вызов is_valid().

Итак, я думаю, мой вопрос:

  1. Можно ли не проверять правильность формы?
  2. Если это не так, есть идеи, почему он всегда возвращает ложь?

Спасибо

Mike

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Вы должны проверить свой, если ваша форма действительна, и тогда вы можете перейти оттуда, но я обнаружил, что сработало, когда у меня возникла та же проблема:

def add(request):
form = SearchForm()
add_form = AddForm()
if request.method == 'GET':
    add_form = AddForm(request.GET)
    if add_form.is_valid():
        return render_to_response('inventory_app/add.html', {'form': form, 'add_form': add_form, 'message': 'Sent Sucessfully'}, context_instance=RequestContext(request))
    else: 
        return render_to_response('inventory_app/add.html', {'form': form, 'add_form': add_form}, context_instance=RequestContext(request))

С акцентом на строку передстрока add_form.is_valid:

add_form = AddForm(request.GET)
    if add_form.is_valid():

Если вы не запрашиваете форму, оператор .is_valid всегда будет возвращать false.

0 голосов
/ 06 декабря 2010

Постарайтесь найти конкретные ошибки проверки для вашей формы, которые, возможно, дадут вам больше информации о конкретной ошибке: http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-the-form-s-fields

...