python - 'datetime.date' 对象在使用 timedelta 时没有属性 'days' 错误
问题描述
在这里,我正在编写属性方法来显示剩余休假天数和总休假天数。总休假天数工作正常,但这def leave_remaining_days(self)
不起作用。我去这个错误
'datetime.date' 对象没有属性 'days'
这里的问题是在返回天数return leave_remaining.days
时,但是当我返回时return leave_remaining
它就可以工作。
我如何计算这里的剩余休假天数?
只有当leave.is_accepted
True 时,我才想计算剩余天数。
我想每天减少天数,1
直到end_day
datetime.date.today() == self.end_day
.
编辑:为此,我使用了芹菜,但这也不起作用。最初检查它是否有效,我在周期性任务中设置了 minutes=1 但它不起作用。
模型.py
class Leave(models.Model):
staff = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,related_name='staff')
sub = models.CharField(max_length=300)
msg = models.TextField()
start_day = models.DateField()
end_day = models.DateField()
is_accepted = models.BooleanField(default=False)
is_rejected = models.BooleanField(default=False)
@property
def leave_days(self):
diff = self.end_day - self.start_day
return diff.days
@property
def leave_remaining_days(self):
if self.is_accepted and not datetime.date.today() > self.end_day:
leave_remaining = self.end_day - datetime.timedelta(days=1)
return leave_remaining.days
#changes
from celery.schedules import crontab
from celery.task import periodic_task
@property
@periodic_task(run_every=crontab(minute=1))
def leave_remaining_day(self):
if self.is_accepted and not datetime.date.today() > self.end_day:
leave_remaining = self.leave_days - 1
return leave_remaining
解决方案
您收到此错误的原因是timedelta
从 a中减去 adate
会导致 a date
。
Adate
没有days
属性(您可以通过创建一个并调用dir(...)
它或查看文档来检查它)。
在旁注中,如果您想leave_remaining_days
返回距离结束还有多少天Leave
,那么您应该执行以下操作:
@property
def leave_remaining_days(self):
if self.is_accepted and not datetime.date.today() > self.end_day:
delta = self.end_day - datetime.date.today()
return delta.days
由于您正在存储start_day
,end_day
我不确定您是否需要每天减少任何内容。您也许可以检查我上面写的属性。
推荐阅读
- react-native - 从 Expo.MapView React-native 将 fitToSuppiedMarkers 应用到我的地图的正确方法是什么?
- java - onActivityResult 返回 null
- angular - 如何在 Angular 4 的视图和模型中具有不同的值
- android - 安卓 | 保存和恢复活动中使用的片段
- python - Beautiful Soup 根据部分属性值查找标签
- excel - 尝试删除excel中的某些重复值
- javascript - lodash:使用pickBy过滤对象中的对象
- python - SQLAlchemy 一对多查询
- python-3.x - OpenCV 3.2+ FileStorage 会将 SimpleBlobDetector_create 对象保存在 XML 或 YML 中吗?
- azure - 是否可以通过 RESTful 端点访问 Azure 容器实例中的 Docker 容器?