@Animkim
Питон вокруг меня

Django формы, как динамически добавить поля?

class MyForm(forms.Form):
    slug = forms.CharField(max_length=50)

Есть форма, нужно динамически добавить в нее неизвестное заранее количество полей одного типа.
Что-то не могу сообразить как такое провернуть, может кто-нибудь пнет в нужную сторону?
Во пришло в голову это, только не знаю насколько это тру, псевдокод.
class MyForm(forms.Form):
    def __init__(self, *args):
         super(MyForm, self).__init__(*args)
         self.fields.update({'fields': forms.CharField(max_length=50),})
    slug = forms.CharField(max_length=50)
  • Вопрос задан
  • 2258 просмотров
Решения вопроса 1
class MyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        slugs_cnt = kwargs.pop('slugs_cnt', None)
        super(MyForm, self).__init__(*args, **kwargs)

        if slugs_cnt:
            for i in xrange(1, slugs_cnt + 1):
                self.fields['slug_{}'.format(i)] = forms.CharField(max_length=50)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
zelsky
@zelsky
Formset жы.
Ответ написан
Комментировать
MAKAPOH
@MAKAPOH
многостаночник
Попробуйте вот так, на ходу создавать класс формы:
MyForm = type('MyForm', (forms.Form,), {
    'slug01': forms.CharField(max_length=50),
    'slug02': forms.CharField(max_length=50),
    'slug03': forms.CharField(max_length=50),
})
form = MyForm()
...

Поидее должно работать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы