Не могу сделать Django ModelForm Select Choice Полевая работа в шаблоне - PullRequest
0 голосов
/ 18 января 2020

Я перепробовал несколько решений, но не смог заставить свое поле работать в шаблоне Django. Я начинающий и смиренно извиняюсь, если мой вопрос не соответствует стандартам. Моя кнопка выбора не отображает никаких параметров в форме django. У меня есть только два варианта, чтобы показать. Есть ли в любом случае я могу получить поле формы, не повторяя его в шаблоне? Использование Django 3 и Python 3.8. Помощь будет высоко ценится.

Модель:

class User(AbstracUser):
   ACC_TYPE = (('Student', 'Student'), ('Teacher', 'Teacher'))
   role = models.CharField(max_length=100, choices=ACC_TYPE
   .....

Форма:

class UserForm(UserCreationForm): #Using django's default form
      account_type = forms.CharField(widget=forms.Select(choices=User.ACC_TYPE))
      model = User
      fields =('.............,
              'account_type')
     def __init__(self, *args, **kwargs):
        super(UserCreationForm, self).__init__(*args, **kwargs)
        self.fields['account_type'].choices = [(each[0], each[1]) for each in User.ACC_TYPE]
        self.fields['account_type'].required = True

Шаблон:

     .......
     <select>
     {% for opt, val in form.account_type.choices %}
      <option value="{{ opt }}">{{ value }}</option>
     {% endfor %}
     </select>
     ......

1 Ответ

1 голос
/ 01 февраля 2020

Ваш лог c в порядке. У вас не должно быть этой проблемы. Единственная причина может заключаться в том, что вы используете какую-то тему bootstrap с настроенными классами CSS. Теперь вы либо загружаете эти пользовательские классы для каждого поля, либо можете использовать django -crispy-fields, который наследует все классы с form-group. Вам нужно будет загрузить форму с помощью {{form | crispy}}. Для получения подробной информации, пожалуйста, проверьте настройки для django -crispy-forms. Не забудьте загрузить тег в верхней части страницы, где вы хотите использовать его в соответствии с настройками {% load crispy_forms_tags%}. Читайте документы здесь .

...