空 IntegerField 上的 Django 表单验证

标签 django django-forms django-validation

我有一个表单,我不会将其呈现为 HTML 页面的一部分,但会验证输入:

class milestone_form(forms.Form):
    name = forms.CharField(required=True)
    completion = forms.IntegerField(initial=0, required=False)
    due_date = forms.DateField(required=True,input_formats={'%d.%m.%Y'})
    phase = forms.IntegerField(required=True)

这个完成位导致了很多问题:

form = milestone_form(request.POST)
form.is_valid()#will return False on empty completion

我尝试覆盖表单的 clean() 以使completion = 0(当它为空时):

def clean(self):
    cleaned_data = self.cleaned_data
    if cleaned_data.get('completion') is None:
        cleaned_data['completion'] = 0
    return cleaned_data 

但是,这没有帮助。我还有什么遗漏的吗?

最佳答案

这可能是我为空白字段返回整数并进行错误检查的方式:

from django.forms import ValidationError

def clean_completion(self):
    if self.cleaned_data.get('completion'):
        try:
            return int(self.cleaned_data['completion'].strip())
        except ValueError:
            raise ValidationError("Invalid number")
    return 0

关于空 IntegerField 上的 Django 表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9958988/

相关文章:

Django:如何使用中间件将请求重新路由到不同的 View

python - 如何防止 Django 覆盖 sessionid cookie?

python - Django 从管理面板发送邮件

django - 如何在 user.save() 之后验证并返回访问和刷新 token

database - 如何禁用 Django 查询缓存?

python - 在 Django 中的不同 View 之间传递数据

python - 如何遍历表单字段选择并显示关联的模型实例字段

django - 两种模型的一种形式

django - 如何在 Django 中获取 UploadedFile 的临时名称?

javascript - 用javascript判断当前用户是否是 super 用户