Джанго: экземпляр одного поля из формы - PullRequest
0 голосов
/ 22 марта 2019

У меня есть форма (обычная, а не ModelForm), для инициализации которой мне нужно одно из ее полей.

Мне нужно сделать что-то вроде этого:

views.py

def my_view(request):
    my_var = MyClass.objects.get(my_filter=my_value).a_var
    form = MyForm(my_form_field = my_var)

Мне нужно инициализировать значение одного из полей MapeoForm. Пока я знаю только, как заполнить ModelForm экземпляром объекта класса.

Примите во внимание, что эта форма имеет более одного поля, но мне нужно загрузить форму только с заполненным этим полем, а остальные по умолчанию (пусто).

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Вы можете использовать initial для загрузки динамического значения в форму django.

In [6]: from django import forms
   ...: class SampleForm(forms.Form):
   ...:     name = forms.CharField()
   ...:     
   ...: f = SampleForm(initial={'name': 'this is name'})
   ...: print(f)
   ...: 
   ...: 
<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" value="this is name" required id="id_name" /></td></tr>

In [7]: 

Вы также можете передать начальное значение по умолчанию в само поле,

In [7]: from django import forms
   ...: class SampleForm(forms.Form):
   ...:     name = forms.CharField(initial='this is default name')
   ...:     
   ...: f = SampleForm()
   ...: print(f)
   ...: 
   ...: 
   ...: 
<tr><th><label for="id_name">Name:</label></th><td><input type="text" name="name" value="this is default name" required id="id_name" /></td></tr>

In [8]:
1 голос
/ 22 марта 2019

Вам нужен аргумент initial.

form = MyForm(initial={'my_form_field': my_var})
...