首页 > 解决方案 > 从 Django 表单中清除“ChoiceField”

问题描述

模型:

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回到清理后的数据。

提前致谢!

标签: djangodjango-modelsdjango-forms

解决方案


发生错误是因为您没有is_valid()在任何时候调用您的表单。cleaned_data仅在被调用后才存在。

你想要一些类似于[伪代码传入]的东西:

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

有关 django 的解释,请参阅文档:构建表单


推荐阅读