具有 empty_label 作为有效输入的 Django ModelChoiceField
Django ModelChoiceField with empty_label as valid input
我正在使用以下表格生成包含我的注册用户的下拉列表:
class TaskAssignUserForm(forms.Form):
user = forms.ModelChoiceField(queryset=User.objects.all().order_by('username'))
在我的模板中,我呈现了上面的表单和一个提交按钮。应用程序用户可以从注册用户中选择 select 一个,并将 him/her 分配给任务。如果 selected.
是用户而不是空标签 (--------),这是有效的
但是,我也希望将空标签作为一个有效选项,以取消任务和用户之间的分配。我正在使用以下 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()
检查一起工作。
是否有解决该问题的 djangonian 方法?
再见,阿罗纳达
你应该只需要在字段上设置 required=False
。
user = forms.ModelChoiceField(required=False, queryset=User.objects.all().order_by('username'))
这意味着无需选择表格即可生效。
我正在使用以下表格生成包含我的注册用户的下拉列表:
class TaskAssignUserForm(forms.Form):
user = forms.ModelChoiceField(queryset=User.objects.all().order_by('username'))
在我的模板中,我呈现了上面的表单和一个提交按钮。应用程序用户可以从注册用户中选择 select 一个,并将 him/her 分配给任务。如果 selected.
是用户而不是空标签 (--------),这是有效的但是,我也希望将空标签作为一个有效选项,以取消任务和用户之间的分配。我正在使用以下 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()
检查一起工作。
是否有解决该问题的 djangonian 方法?
再见,阿罗纳达
你应该只需要在字段上设置 required=False
。
user = forms.ModelChoiceField(required=False, queryset=User.objects.all().order_by('username'))
这意味着无需选择表格即可生效。