как установить значение поля формы-django
Я хочу показать пустое поле формы, если нечего показывать, иначе поле формы со значением внутри:
{% if somevalue %}
{{form.fieldname}} #<---- how do i set the `somevalue` as value of fieldname here?
{% else %}
{{form.fieldname}}
{% endif %}
2 ответов
на ваш взгляд, сделайте так, если его CBV
class YourView(FormView):
form_class = YourForm
def get_initial(self):
# call super if needed
return {'fieldname': somevalue}
если его общий вид, или нет FormView
вы можете сделать так
form = YourForm(initial={'fieldname': somevalue})
существует несколько способов предоставления исходных данных в форме django.
По крайней мере, некоторые из них:
1) представить исходные данные в качестве аргумента поля.
class CityForm(forms.Form):
location = ModelChoiceField(queryset=City.objects.all(), initial='Munchen')
2) Установите его в init метод формы:
class CityForm(forms.Form):
location = ModelChoiceField(queryset=City.objects.all())
def __init__(self, *args, **kwargs):
super(JobIndexSearchForm, self).__init__(*args, **kwargs)
self.fields['location'].initial = 'Munchen'
3) передайте словарь с начальными значениями при создании экземпляра формы:
#views.py
form = CityForm(initial={'location': 'Munchen'})
в вашем случае, я думаю, что-то вроде этого будет работать..
class CityForm(forms.Form):
location = ModelChoiceField(queryset=City.objects.all())
def __init__(self, *args, **kwargs):
super(JobIndexSearchForm, self).__init__(*args, **kwargs)
if City.objects.all().exists():
self.fields['location'].initial = ''
else:
self.field['location'].initial = City.objects.all()[:1]
Это все только для демонстрации, ты должен приспособить его к своему делу.