Joe*_*e J 4 forms django validation
我有一种情况,用户可以在html表单上单击一个复选框字段"field_enable",一个漂亮的jQuery操作将显示另一个字段"fielda",供用户输入更多数据.当"field_enable"是选中,我想要求用户也填写"fielda".取消选中"field_enable"时,应允许用户提交表单而不会出现错误.
我希望所有错误都出现在字段上方的错误列表中,而不是整个表单的form.errors列表中(这就是为什么我没有使用表单的clean()方法).因此,我在下面提出了这个代码.
启用/禁用逻辑非常有效.当选中"field_enable"时,用户必须填写"fielda",当取消选中时,用户会传递.但是,当选中该框时,要求用户填写更多信息,即使他们填写"fielda"的值,他们也会得到验证错误"Fielda is required".这违背了期望.
有没有人有任何建议,为什么"fielda"总是在检查"field_enable"时失败验证
class MyForm(forms.ModelForm):
def clean_fielda(self):
cleaned_data = self.cleaned_data
if cleaned_data.get("field_enable"):
raise forms.ValidationError("Fielda is required")
return cleaned_data['fielda']
Run Code Online (Sandbox Code Playgroud)
模型的一个例子
class MyModel(models.Model):
field_enable = models.BooleanField(default=False)
fielda = models.CharField(max_length=128, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢!
乔
如果选中"field_enable" 并且您没有"field_a"的值,则需要引发验证错误.像这样(你错过了"field_a"存在检查):
class MyForm(forms.ModelForm):
def clean_fielda(self):
cleaned_data = self.cleaned_data
if cleaned_data.get("field_enable") and not cleaned_data.get('field_a'):
raise forms.ValidationError("Fielda is required")
return cleaned_data['fielda']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3140 次 |
| 最近记录: |