从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