Django 1.3.1模型形式清洁方法

时间:2012-01-30 19:16:54

标签: django django-forms

Django 1.2.x适用于这些,但Django 1.3.1中存在问题,因为我有验证错误,说明所选的选项不在列表中。 我有模型表格

模型:

class Cvet(models.Model):
    ...
    template = models.ForeignKey(Predefinisan_tekst, blank=True, null=True, related_name='template')
    ...

形式:

class NoviCvetForm(forms.ModelForm):
    class Meta:
        model = Cvet

    def clean(self):
        super(NoviCvetForm, self).clean()
        cleaned_data = self.cleaned_data
        template = cleaned_data.get("template")
        if template == '------':
            cleaned_data["template"] = None
        return cleaned_data

现在在django模板中template是选择字段,我已手动创建<option selected="selected">------</option>作为列表中的第一个选项。因此,当在此字段中未提供用户选择的情况下提交表单时,request.POST会将template字段的值发送为------,这是无效选项。我需要在clean方法中更改以获取该字段的值为无?

1 个答案:

答案 0 :(得分:2)

那是因为None不是列表中的值。我不确定你是如何使用以前版本的Django的,因为那里的问题会是一样的。但是,您必须在choices数组中存储有效值(来自cleaned_data),否则它将无法通过验证。

如果您想在选择None时实际存储-----,请覆盖save方法。

相关问题