@nurzhannogerbek

Как добавить переключатели и отметить их при открытии формы?

Здравствуйте, помогите пожалуйста разобраться! У меня есть несколько вопросов.

У меня есть форма редактирования пользовательских данных. В модели данных User (django.contrib.auth.models), которую предоставляет Django есть поля как: is_superuser и is_staff. Данные поля являются BooleanField и к ним применяется виджет c checkbox.

Хочу добавить переключатели (radio) в форму как на рисунке снизу, но как поменять виджет и отменить переключатель как checked у тех значений к которых стоит True при открытии формы редактирования? К примеру если is_superuser=True, то отмеченным должен быть первый переключатель (суперпользователь). Если is_staff=True, то отмеченным должен быть второй переключатель (модератор). Если is_superuser и is_staff оба равны False, то отметить третий переключатель.

1. Можно создать форму, которая наследуется от forms.Form и во вьюшке вручную брать значение полей и записывать в БД. Но в этом варианте не понимаю как отметить нужный переключатель при открытии формы редактирования.
class UserChangeForm(forms.Form):
    CHOICES = (('1', 'Суперпользователь',), ('2', 'Модератор',), ('3', 'Простой пользователь',))
    user_role = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES)


2. Второй вариант создать форму, которая наследуется от UserChangeForm (django.contrib.auth.forms). В данном варианте нужно поменять как-то виджеты для полей is_superuser и is_staff.

Что можете посоветовать? Интересно узнать ваши идеи?

5a0e517661e3e793777788.png
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
@TopestKek
https://stackoverflow.com/questions/657607/setting...
Ну тут вот решен твой вопрос - стоит передавать Initial значение из вьюхи, в которой ты используешь форму
Про сам аргумент initial написано в документации https://docs.djangoproject.com/en/1.11/ref/forms/f...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы