Переменное количество исходных данных с возможными формами Django?

Я бы не сказал «тупой».

Я думаю, что это проблемы. Большинство учебников по SQL, книги, все, что объясняет SQL со встроенными значениями, вообще не упоминают параметры привязки. Люди, изучающие эти учебные пособия, не имеют возможности изучить его правильно.

18
задан Jiaaro 7 January 2009 в 15:16
поделиться

3 ответа

Да, возможно создать формы динамично в Django. Вы можете даже смешивание и подгонка динамические поля с нормальными полями.

class EligibilityForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(EligibilityForm, self).__init__(*args, **kwargs)
        # dynamic fields here ...
        self.fields['plan_id'] = CharField()
    # normal fields here ...
    date_requested = DateField()

Для лучшей разработки этой техники, см. статью James Bennett: , Таким образом, Вы хотите динамическую форму?

http://www.b-list.org/weblog/2008/nov/09/dynamic-forms/

17
ответ дан 30 November 2019 в 07:56
поделиться

Если Вы работаете

python manage.py shell

и тип:

from app.forms import PictureForm
p = PictureForm()
p.fields
type(p.fields)

Вы будете видеть, что p.fields является SortedDict., просто необходимо вставить новое поле. Что-то как

p.fields.insert(len(p.fields)-2, 'fieldname', Field())

В этом случае это вставило бы перед последним полем, новым полем. Необходимо теперь адаптироваться к коду.

Другая альтернатива должна сделать для/цикл с условием продолжения в Вашем шаблоне и сделать форму в HTML, но скалу форм django по некоторым причинам, правильно?

7
ответ дан 30 November 2019 в 07:56
поделиться

Используйте любые несколько формы (django.forms. Сформируйте не тег)

class Foo(forms.Form):
    field = forms.Charfield()

forms = [Foo(prefix=i) for i in xrange(x)]

, или добавьте несколько полей к форме динамично с помощью self.fields.

class Bar(forms.Form):
    def __init__(self, fields, *args, **kwargs):
        super(Bar, self).__init__(*args, **kwargs)
        for i in xrange(fields):
            self.fields['my_field_%i' % i] = forms.Charfield()
7
ответ дан 30 November 2019 в 07:56
поделиться
Другие вопросы по тегам:

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