Динамические формы 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, что на мой блог попадают люди по поисковой фразе "динамические формы джанго".

Популярные статьи

Про стэнфордские онлайн-классы

Django Dash 2011, мои впечатления

Лев Валкин про Силиконовую долину

OpenOffice + Python, pабота с файлами MS Word

Блоги программистов

Бывают ли такие дизайнеры?

Скорость

Жизнь и работа на море

Нужно больше творить

Pip, virtualenv и virtualenvwrapper

Об авторе

Меня зовут Роман Ворушин. Я отец двух дочерей и страстный программист.

С командой киборгов сделал Рисоваську, а потом еще много веб-проектов. Сейчас работаю в Grammarly.

roman.vorushin@gmail.com