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
方法中更改以获取该字段的值为无?
答案 0 :(得分:2)
那是因为None
不是列表中的值。我不确定你是如何使用以前版本的Django的,因为那里的问题会是一样的。但是,您必须在choices
数组中存储有效值(来自cleaned_data
),否则它将无法通过验证。
如果您想在选择None
时实际存储-----
,请覆盖save
方法。