Django - динамическое количество полей на форме - PullRequest
2 голосов
/ 03 марта 2012

Я провел последние 24 часа, стуча головой о стену, пытаясь решить эту проблему. Я уже знаю, что на этой доске есть как минимум 10 подобных вопросов. Почему я все еще спрашиваю? Ну, потому что никакое решение, кажется, не работает :). Вот код:

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

    def __init__(self, *args, **kwargs):
        super(MyAdminForm, self).__init__(*args, **kwargs)

        for i in range(0, 10):
            self.fields['file_field_%d' % i] = forms.FileField()

Этот код отображает только поле some_field и ничего больше. Это не волнует, я добавляю 10 файловых полей. Версия Django - 1.3.1

1 Ответ

0 голосов
/ 03 марта 2012

Добавление полей перед вызовом __init__() базового класса работало для меня.

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

    def __init__(self, *args, **kwargs):
        for i in range(0, 10):
            self.fields['file_field_%d' % i] = forms.FileField()

        super(MyAdminForm, self).__init__(*args, **kwargs)

Если вам не нужно переменное количество полей в каждом экземпляре формы, модификация только свойства класса base_fields также должна работать.

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

for i in range(0, 10):
    MyAdminForm.base_fields['file_field_%d' % i] = forms.FileField()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...