Поля формы шаблона Django отображаются в беспорядке - PullRequest
0 голосов
/ 01 ноября 2018

Я работаю над формой Django, поэтому у меня есть четыре поля формы, такие как:

First Name:
Last Name:
Address:
Contact Info:

эти данные формы пришли в Django Template and Render, но отображают эти поля не в правильном порядке. Каждый раз, когда я обновляю страницу, порядок полей меняется. Пример: На первой странице загрузите его как

Last Name: 
First Name:
Contact Info:
Address:

При обновлении порядок страниц изменяется как

Address:
Last Name:
Contact Info:
First Name:

вот мой код формы шаблона Django, который отображает форму в Tempalte:

{% for fields in formset %}
 <div class="row">
   <div class="col-md-12">
     <label class="col-4 control-label">{{fields.label}}
      </label>
     {{fields}}
   </div>
 </div>
{% endfor %}

Мой файл Form.py содержит эту форму:

class my_info(forms.Form):
    Action = forms.ChoiceField(
        label="First Name",
        widget=forms.Select(attrs={'class': 'form-control'}),
    choices=Action_choice)

    model_id = forms.CharField(
        label ='Last Name',
        widget=forms.TextInput(attrs={'class': 'form-control','type':'hidden'})
    )

    Address = forms.CharField(
        label ='Address',
        widget=forms.TextInput(attrs={'class': 'form-control'})
    ) ,

    Label = forms.CharField(
        label ='Contact Info',
        widget=forms.TextInput(attrs={'class': 'form-control'})
    )

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

First Name:
Last Name:
Address:
Contact Info:

Ответы [ 2 ]

0 голосов
/ 29 января 2019

В вашем 'meta' классе внутри forms.py вы могли установить поля в {}. Фигурные скобки используются для set , который является неупорядоченным. Установка параметра поля в [] или () поможет вам получить его в нужном вам порядке.

например:

`class LoginForm(forms.ModelForm):
      username = forms.CharField(help_text='')
      password = forms.CharField(widget=forms.PasswordInput())
      class Meta:
            model = UserRegistration
            fields = ['username','password']`
0 голосов
/ 01 ноября 2018

Вы можете проверить документацию по формам django для вашей конкретной версии django: https://docs.djangoproject.com/en/1.11/topics/forms/#rendering-fields-manually

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

{{ form.field }}}

в вашем шаблоне, вместо итерации по набору форм, вы получите их в нужном вам порядке:

<form method="get">
  {% csrf_token %}
        <div class="row">
            <div class="col-md-12">
                <label class="col-4 control-label"> {{ form.Action.label }}               
                </label>
                {{ form.Action }}
            </div>
            <div class="col-md-12">
                <label class="col-4 control-label"> {{ form.model_id.label }}               
                </label>
                {{ form.model_id }}
            </div>
            <div class="col-md-12">
                <label class="col-4 control-label"> {{ form.Address.label }}               
                </label>
                {{ form.Address }}
            </div>
            <div class="col-md-12">
                <label class="col-4 control-label"> {{ form.Label.label }}               
                </label>
                {{ form.Label }}
            </div>
        </div>
        <button type="submit" class="btn btn-primary">
            <span class="glyphicon glyphicon-search"></span> Submit
        </button>
</form>

Также я бы посоветовал вам использовать более репрезентативные имена для полей формы ...

...