Django ModelChoiceField с empty_label в качестве допустимого ввода
Я использую следующую форму для создания выпадающего списка с моими зарегистрированными пользователями:
class TaskAssignUserForm(forms.Form):
user = forms.ModelChoiceField(queryset=User.objects.all().order_by('username'))
Внутри моего шаблона я отображаю вышеупомянутую форму вместе с кнопкой отправки. Пользователь приложения может выбрать из зарегистрированных пользователей, чтобы выбрать одного и назначить его / ее для задачи. Это работает, если выбран пользователь, а не пустой ярлык (--------).
Но я хочу, чтобы пустая метка также была допустимой, чтобы отменить назначение между задачей и пользователем. Я работаю со следующими views.py
и ищет опцию, чтобы проверить, был ли сделан пустой ярлык или пустой выбор.
if form_TaskAssignUserForm.is_valid():
task.user_assigned = form_TaskAssignUserForm.cleaned_data['user']
task.save()
else:
if # check if emtpy label is set
task.user_assigned = None
task.save()
Я узнал, что проверка, если form_TaskAssignUserForm.cleaned_data['user']
существует вариант, но я не чувствую себя комфортно с этим. Должен быть способ, который работает вместе с .is_valid()
проверять.
Есть ли джангонский способ решения этой проблемы?
Пока, Аронадааль
1 ответ
Вам просто нужно установить required=False
на поле.
user = forms.ModelChoiceField(required=False, queryset=User.objects.all().order_by('username'))
Это означает, что для правильности формы выбор не требуется.