【问题标题】:Django ModelChoiceField with empty_label as valid input使用 empty_label 作为有效输入的 Django ModelChoiceField
【发布时间】:2017-01-17 15:20:35
【问题描述】:

我正在使用以下表单为我的注册用户生成一个下拉列表:

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() 检查一起使用。

有解决这个问题的 djangonian 方法吗?

再见,阿罗纳达尔

【问题讨论】:

    标签: python django modelchoicefield


    【解决方案1】:

    您应该只需要在字段上设置required=False

    user = forms.ModelChoiceField(required=False, queryset=User.objects.all().order_by('username'))
    

    这意味着无需选择表单即可生效。

    【讨论】:

    • 这太容易了;)
    猜你喜欢
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 2013-09-15
    相关资源
    最近更新 更多