Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Django表单中清除“ChoiceField”_Django_Django Models_Django Forms - Fatal编程技术网

从Django表单中清除“ChoiceField”

从Django表单中清除“ChoiceField”,django,django-models,django-forms,Django,Django Models,Django Forms,型号: 表格: 当我调用我的表单时,我会像level=GroupLevelForm({level:'Individual'})那样调用它。我希望个人返回到已清理的数据中 我在表单中传递外部名称。如何获取选择字段的内部名称 例如:options=(('internal',External'),)当我像level=GroupLevelForm({level:'External'})那样操作时如何在清理的\u数据中获取internal 提前谢谢 发生错误是因为您没有在任何时候在表单上调用is\u

型号:

表格:

当我调用我的表单时,我会像
level=GroupLevelForm({level:'Individual'})
那样调用它。我希望
个人
返回到已清理的数据中

  • 我在表单中传递外部名称。如何获取
    选择字段的内部名称
    
  • 例如:
    options=(('internal',External'),)
    当我像
    level=GroupLevelForm({level:'External'})那样操作时
    如何在
    清理的\u数据中获取
    internal

提前谢谢

发生错误是因为您没有在任何时候在表单上调用
is\u valid()
<代码>已清理的\u数据
仅在调用后存在一次

您需要与[伪代码传入]类似的内容:

class GroupLevelForm(forms.Form):
    level = forms.ChoiceField(choices=SocialGroup.options)

    def clean_level(self):
        return self.cleaned_data['level']

关于django的解释,请参阅文档:

如果我正确理解了这个问题,我想你可以这样做

def clean_fields():
    if form.is_valid():
        self.cleaned_data['level']

首先,我为误导性的信息道歉。基本上,我要问的是,如果对于
选择字段
我正在以我的形式传递
外部名称
,我如何才能取回
选择字段
内部名称
。例如:
options=(('internal',External')
当我像
level=GroupLevelForm({level:'External'})那样操作时
如何在
清理的\u数据中获取
内部
。我有一种感觉,如果您将GroupLevelForm更改为ModelForm类,它将为您解决此问题。否则,您可能最终不得不从清理的\u数据中获取内容,并将其与
选项中的正确元组匹配。
。太棒了!谢谢!@D如果这解决了您的问题,请将该答案标记为已接受的答案,以便该问题在问题列表中标记为已解决。谢谢
def clean_fields():
    if form.is_valid():
        self.cleaned_data['level']
def clean_level(self):
    selected_display_name = self.cleaned_data['level']
    for val, disp_name in SocialGroup.options:
        if disp_name == selected_display_name:
            return val
    return selected_display_name  # or whatever default you want