Можете ли вы сделать набор форм Django для проверки исходных данных? - PullRequest
1 голос
/ 30 июля 2009

Вот пример:

from django import forms
class ArticleForm(forms.Form):
     title = forms.CharField()
     pub_date = forms.DateField()

from django.forms.formsets import formset_factory
ArticleFormSet = formset_factory(ArticleForm)

formset = ArticleFormSet(initial=my_data)

Таким образом, «my_data» в примере - это данные, которые я хочу сформировать, чтобы показать, когда они впервые загружаются перед любым вводом пользователем. Но я хотел бы пойти дальше и запустить проверку формы на данных, чтобы пользователь мог увидеть, есть ли какие-либо ошибки, прежде чем редактировать данные.

Я пытался сделать это:

formset = ArticleFormSet(initial=my_data)
formset.is_valid()

Но это не помогло.

Ответы [ 2 ]

1 голос
/ 22 февраля 2012

Использование

formset = ArticleFormSet(data=my_data)

Очень важно, my_data должен быть в этом формате диктовкой

data = {
    'form-TOTAL_FORMS': u'2',
    'form-INITIAL_FORMS': u'2',
    'form-MAX_NUM_FORMS': u'',
    'form-0-title': u'Test',
    'form-0-pub_date': u'1904-06-16',
    'form-1-title': u'Test',
    }

form-TOTAL_FORMS и form-INITIAL_FORMS являются обязательными !!!

1 голос
/ 30 июля 2009

Я не вижу, как могут возникнуть какие-либо ошибки проверки, если данные только что вышли прямо из БД. Однако сделать это довольно легко - вместо того, чтобы передавать данные как initial,, передайте их как data, как если бы они пришли из POST.

formset = ArticleFormSet(data=my_data)

Устанавливает форму как связанную и запускает проверку.

...