как установить значение поля формы-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]

Это все только для демонстрации, ты должен приспособить его к своему делу.