【问题标题】:Comparing Dates in Django在 Django 中比较日期
【发布时间】:2021-06-09 01:01:00
【问题描述】:

我需要将预订表中的日期字段与今天的日期进行比较。我正在尝试遍历所有预订日期,如果日期小于今天的日期,则将字段状态更改为“已完成”

我不断收到以下错误

"TypeError: 'datetime.date' 和 'str' 的实例之间不支持'

我已尝试对此进行研究,但无法解决问题。

下面是我的代码。

模型。(ASPBookings)

booking_date = models.DateField()

查看

date_today = (datetime.datetime.now())
date_stripped = date_today.strftime('%Y-%m-%d')

asp_date_data = ASPBookings.objects.all()

for booking in asp_date_data:
    print (booking.booking_date)
    if booking.booking_date < date_stripped:
       booking.status == 'Completed'
       booking.save()

我已经检查了字段的输出,并且在剥离时间后日期显示相同。例如。

ASPBookings 字段日期 2021-05-27 2021-06-24 2021-06-15

今天的日期 2021-06-09

在此先感谢您提供的任何帮助。

【问题讨论】:

  • strftime 会给你一个字符串
  • 也去掉多余的=:booking.status = 'Completed'

标签: django date date-comparison


【解决方案1】:

错误信息很清楚,这意味着您无法将date 对象(booking.booking_date 的类型)与字符串(date_stripped 的类型)进行比较。试试这个:

date_today = datetime.datetime.now().date() # use this instead of strftime

asp_date_data = ASPBookings.objects.all()

for booking in asp_date_data:
    print (booking.booking_date)
    if booking.booking_date < date_stripped:
       booking.status == 'Completed'
       booking.save()

【讨论】:

  • 感谢 hldev 和 bdbd,感谢您的帮助。那行得通。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
  • 2012-04-20
  • 2013-06-18
  • 1970-01-01
  • 2021-02-12
  • 2018-05-18
相关资源
最近更新 更多