python - 无法将 datetime.datetime 与 django 中的 datetime.date 进行比较
问题描述
我正在构建一个 BlogApp,但我遇到了一个错误。我尝试了很多次并尝试了很多答案,但没有解决我的错误。
def validate_date(date_added):
if date_added < timezone.now().date():
raise ValidationError("Date cannot be in the past")
class BlogPost(models.Model):
post_owner = models.ForeignKey(User,default='',null=True,on_delete = models.CASCADE)
post_title = models.CharField(max_length=500,default='')
date_added = models.DateTimeField(null=True,default=timezone.now,validators=[validate_date])
这个函数的工作
此功能的工作是防止过去的日期作为输入。
问题
每当我尝试撰写新的博文并尝试添加过去的日期时,它就会一直显示给我:-
无法将 datetime.datetime 与 datetime.date 进行比较
我试过什么
我尝试了很多这样的答案,但对我没有任何帮助。
我不知道这段代码有什么问题。
任何帮助,将不胜感激。
先感谢您
解决方案
您也应该将左操作数转换为日期,因此:
def validate_date(date_added):
# ↓ convert to a date
if date_added.date() < timezone.now().date():
raise ValidationError('Date cannot be in the past')
或者如果时间戳不应该是过去的(日期和时间),那么我们比较datetime
对象:
def validate_date(date_added):
if date_added < timezone.now():
raise ValidationError('Date cannot be in the past')
推荐阅读
- boto3 - (cdk + boto3):在 CDK 应用程序中使用 boto3
- sharepoint - 将文件从 Blazor Server 应用上传到 SharePoint Online 库
- javascript - 我处于无限循环中
- file - 如何通过`openstack application credential create`或identity api application_credentials获取openrc文件
- visual-studio-code - 如何访问 extension.ts 中的函数结果?VS 代码扩展
- python - 从给定的数据集中提取路由并使用 networkx 可视化它们
- wordpress - 修复自定义菜单链接
- html2pdf - HTML2PDF 图像标签停止渲染
- r - 用一系列条件语句分组
- firebase - Firebase 将多个身份验证提供程序链接到一个帐户仅适用于相同的电子邮件地址