Динамические формы Django

Неделю-две назад понадобилось мне сделать динамическую форму на Django - чтобы её поля создавались и настраивались в зависимости от данных, передаваемых в конструктор. Изучив исходники, я обнаружил, что сделать это легче легкого:

class DynamicForm(forms.Form):        
    def __init__(self, some_data, *args, **kwargs):
        super(DynamicForm, self).__init__(*args, **kwargs)
        for i, requisite in enumerate(some_data.requisites_list):
            regex = requisite['regexp']
            label = requisite['name']
            self.fields['requisite_%s' % i] = forms.RegexField(regex=regex, label=label)

Ключевой элемент это словарь self.fields - в нем хранятся все поля, которые были перечислены при объявлении класса формы.

PS. Написал это отдельным постом, потому что не первый раз вижу в Google Analytics, что на мой блог попадают люди по поисковой фразе “динамические формы джанго”.

comments powered by Disqus