验证Django时间

时间:2018-06-19 07:27:13

标签: python django django-models django-forms

我无法验证日期。 如果输入的日期少于今天,我的目标是提出错误。

forms.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__'

models.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'

1 个答案:

答案 0 :(得分:3)

该代码应该放在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用于验证整个表单,并且需要返回所有值的字典而不是一个。