首页 > 解决方案 > 验证 Django 时间

问题描述

我无法验证日期。如果输入的日期小于今天,我的目标是引发错误。

表格.py

class user(forms.ModelForm):
    def clean(self):
        date = self.cleaned_data['date_one']
        if date < datetime.date.now()
            raise forms.ValidationError('No past Date')
        return date
    class Meta:
        model = user_model
        widgets = {
            'date_one': forms.DateInput(attrs={'class':'datepicker'}),
            }
        fields = '__all__'

模型.py

class user_model(models.Model):
    name = models.CharField(max_length=20,null=True)
    contact = models.IntegerField(null=True)
    email = models.EmailField(max_length=50,null=True)
    date_one = models.DateField(null=True)

    def __str__(self):
        return self.name

这是错误

Exception Type: AttributeError
Exception Value: 'str' object has no attribute 'get'

标签: pythondjangodjango-modelsdjango-forms

解决方案


该代码应该进入clean_date_one,而不是clean

def clean_date_one(self):
    date = self.cleaned_data['date_one']
    if date < datetime.date.now()
        raise forms.ValidationError('No past Date')
    return date

你得到这个错误的原因clean是为了验证整个表单,并且需要返回一个包含所有值的字典,而不仅仅是一个。


推荐阅读