python - 验证 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'
解决方案
该代码应该进入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
是为了验证整个表单,并且需要返回一个包含所有值的字典,而不仅仅是一个。
推荐阅读
- sql - Oracle - 按时间返回记录
- python - 使用 pydicom 添加新的私有条目密钥
- angular - 如果用户创建新文档,如何使用云功能将 Firestore 数据索引到 Algolia?
- python - 使用 pip 安装软件包后找不到 rabbitmq
- google-cloud-dataproc - 在初始化操作脚本中直接更新 Dataproc 集群(元数据或标签)
- java - 使用 JAXB 创建带有 XSD 的 XML
- ruby-on-rails - 在 Ruby on Rails 中,有没有比使用 eval() 动态访问这个 jsonb 更好的方法?
- python - python中的多处理池问题
- node.js - 安装较新版本的 node.js 后,Angular 项目无法正常工作
- javascript - apollo“订阅字段必须返回异步迭代。收到:未定义”