Хранение динамических полей в формах Django

Попробуйте следующее: http://cairosvg.org/

Сайт говорит:

CairoSVG написан на чистом питоне и только зависит от Pycairo. Известно, что он работает с Python 2.6 и 2.7.

blockquote>

Обновление 25 ноября 2016 г. :

2.0.0 является новая основная версия, ее журнал изменений:

  • Поддержка Drop Python 2
blockquote>

6
задан hekevintran 24 March 2010 в 08:04
поделиться

3 ответа

Посмотрите в этой недавней публикации Джейкоба Каплан-Мосса, одного из первых основателей Django: «Генерация динамических форм» . Он использует пример, чтобы показать вам процесс шаг за шагом. Отличное чтение.

Также есть статья Джеймса Беннета , выпускающего менеджера Django, от 2008 года.

7
ответ дан 8 December 2019 в 13:45
поделиться

В python вы можете создать экземпляр класса динамически. Knutin показывает хороший пример динамической настройки формы и добавления нескольких полей.

Вы также можете создать всю форму динамически, как показано в примере , приведенном Джеймсом Беннеттом :

def make_contact_form(user):
    fields = { 'name': forms.CharField(max_length=50),
           'email': forms.EmailField(),
           'message': forms.CharField(widget=forms.Textarea) }
    if not user.is_authenticated():
    fields['captcha'] = CaptchaField()
    return type('ContactForm', (forms.BaseForm,), { 'base_fields': fields })
5
ответ дан 8 December 2019 в 13:45
поделиться

Чтобы добавить, удалить и изменить поля в форме или ModelForm, просто переопределите __ init __ () следующим образом:

class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
    user = kwargs.pop('user')
    other_stuff = kwargs.pop('stuff')

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

    self.fields['my_dynamic_field'] = forms.Field(...)

    # Add fields based on user or other_stuff

И используйте его так: form = MyForm (user = user, stuff = stuff)

5
ответ дан 8 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

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