型号:
class SocialGroup(models.Model):
INDIVIDUAL = 'individual'
INSTITUTE = 'institute'
options = ((INDIVIDUAL, 'Individual'),
(INSTITUTE, 'Institute'))
level = models.CharField(choices=options, max_length=100)
def __unicode__(self):
return self.name
class Meta:
ordering = ['name']
表格:
class GroupLevelForm(forms.Form):
level = forms.ChoiceField(choices=SocialGroup.options)
def clean_level(self):
return self.cleaned_data['level']
当我调用表单时,我会像level = GroupLevelForm({level: 'Individual'})
那样做。我想individual
回到已清除的数据。
choice field
的内部名称。 options = (('internal, 'External'),)
像level = GroupLevelForm({level: 'External'})
一样,如何在internal
中获得cleaned_data
。谢谢!
答案 0 :(得分:3)
发生错误是因为您没有随时在表单上调用is_valid()
。 cleaned_data
仅在被调用后存在。
您想要一些与[伪代码传入]类似的东西:
def clean_fields():
if form.is_valid():
self.cleaned_data['level']
有关django的解释,请参考文档:building a form
答案 1 :(得分:0)
如果我正确理解了这个问题,我认为你可以做到
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