[英]descriptor 'date' requires a 'datetime.datetime' object but received a 'datetime.date'
Trying to combine date & time and received error: 尝试合并日期和时间以及收到的错误:
descriptor 'date' requires a 'datetime.datetime' object but received a 'datetime.date'
from datetime import date, datetime, time, timedelta
instance = Model.objects.get(pk=id)
datetime = datetime.combine(datetime.date(instance.mydate), datetime.time(instance.mytime))
Edit: 编辑:
mydate and mytime are stored here: mydate和mytime存储在这里:
class Model(models.Model):
mydate = models.DateField(blank=True, null=True)
mytime = models.TimeField(blank=True, null=True)
Edit 2: 编辑2:
I did have this in place but was looking for a 1 line solution: 我确实有这个地方,但是正在寻找1行解决方案:
mydate = datetime.strptime(str(instance.mydate), '%Y-%m-%d')
mytime = datetime.strptime(str(instance.mytime), '%H:%M:%S')
datetime = datetime.combine(datetime.date(mydate), datetime.time(mytime))
The issue is that you are actually trying to call datetime.datetime.date()
, you should be calling datetime.date()
. 问题是您实际上是在尝试调用
datetime.datetime.date()
,而您应该在调用datetime.date()
。 I am guessing you need to use datetime.time()
instead of datetime.datetime.time()
also. 我猜您还需要使用
datetime.time()
而不是datetime.datetime.time()
。
Also, according to documentation , the parameters to datetime.date()
are three integers indicating the year, month and day of the date. 另外,根据文档 ,
datetime.date()
的参数是三个整数,指示日期的年,月和日。
You should do - 你应该做 -
datetime = datetime.combine(date(instance.mydate.year, instance.mydate.month, instance.mydate.day), time(instance.mytime.hour, instance.mytime.minute, instance.mytime.second))
Give the time, upto the accuracy you want, As an example I gave till second
, documentation for that is here . 花费时间,达到您想要的精度,作为
second
例子, 这里提供了文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.