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'))

Это означает, что для правильности формы выбор не требуется.

Другие вопросы по тегам