描述符'date'需要'datetime.datetime'对象,但收到'datetime.date'

时间:2015-06-24 16:32:18

标签: python django

尝试将日期和时间结合起来时间和收到的错误:

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))

编辑:

mydate和mytime存储在这里:

class Model(models.Model):
    mydate = models.DateField(blank=True, null=True)
    mytime = models.TimeField(blank=True, null=True)

编辑2:

我确实有这个,但正在寻找一线解决方案:

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))

1 个答案:

答案 0 :(得分:2)

问题是您实际上是在尝试拨打datetime.datetime.date(),您应该拨打datetime.date()。我猜您还需要使用datetime.time()代替datetime.datetime.time()

此外,根据documentationdatetime.date()的参数是三个整数,表示日期的年,月和日。

你应该做 -

datetime = datetime.combine(date(instance.mydate.year, instance.mydate.month, instance.mydate.day), time(instance.mytime.hour, instance.mytime.minute, instance.mytime.second))

给出时间,达到你想要的准确度。作为一个例子我给second,文件是here