Django更改查询结果的字段类型(!)

Django更改查询结果的字段类型(!),django,django-models,django-orm,Django,Django Models,Django Orm,我有下面的型号 class MonitorData(models.Model): [... other stuff] starttime = models.CharField(max_length=64, db_column='spurlStartTime', blank=True) 类监视器数据(models.Model): […其他东西] starttime=models.CharField(max_length=64,db_column='spurlstartime',blank=

我有下面的型号

class MonitorData(models.Model): [... other stuff] starttime = models.CharField(max_length=64, db_column='spurlStartTime', blank=True) 类监视器数据(models.Model): […其他东西] starttime=models.CharField(max_length=64,db_column='spurlstartime',blank=True) 因此,starttime是一个char字段(在数据库中,它表示一个datetime列)

现在,我要做的是:

oo=models.MonitorData.objects.all() print oo[0].starttime print type(oo[0].starttime) oo=models.MonitorData.objects.all() 打印oo[0]。开始时间 打印类型(oo[0]。开始时间) 下面是我得到的:

00:35:59 <type 'datetime.time'> 00:35:59 出于我自己的原因(不想讨论它们),我想将其作为varchar阅读,然后自己解析。但django不允许我这样做,因为,出于我不知道的原因,它将其转换为datetime

有谁能向我解释一下django为什么会有这种行为,我怎样才能找回我珍贵的琴弦?有没有办法强制django将此值转换为字符串


附言:我知道如何使用str(),所以请不要回答我Django没有对它做过任何事情。DBAPI适配器看到它是一个日期时间,因此返回一个日期时间。在CharField中没有任何东西可以强制datetime发送文本。

Django没有对它做任何处理。DBAPI适配器看到它是一个日期时间,因此返回一个日期时间。在CharField中没有任何东西可以强制datetime发送文本。

我认为, 而不是以datetime格式保存值。尝试将其保存在isoformat中。你可以很容易地转换。我想,
而不是以datetime格式保存值。尝试将其保存在isoformat中。你可以很容易地转换。

实际上我有点惊讶这在远程工作,但由于字段是DATETIME,Django将把它当作DATETIME。我假设
oo[0]。spurlstarttime
是一个输入错误,应该是
oo[0]。starttime
?是的,它是starttime-修复了它是的,我知道这是一个日期时间,但我不明白为什么我不能把它当作一个字符串,如果我想。有没有办法做到这一点?因为它不是字符串。如果Django实际上被视为一个字符串,您会得到一个
IntegrityError
我真的有点惊讶这在远程工作,但是由于该字段是一个日期时间,Django将把它当作一个日期时间。我假设
oo[0]。spurlstarttime
是一个打字错误,应该是
oo[0].starttime
?是的,它是starttime-已修复。是的,我知道它是日期时间,但我不明白如果我想,为什么不能将它作为字符串处理。有没有办法做到这一点?因为它不是字符串。如果Django实际上被视为一个字符串,您将得到一个
IntegrityError
,那么如果我想这样做,我该怎么做(强制日期时间转换为文本)?查菲尔德亚类?当然。但是你真正应该做的是把它变成数据库中的一个VARCHAR。那么如果我想这样做,我该怎么做(强制日期时间变成文本)?查菲尔德亚类?当然。但是您真正应该做的是在数据库中将其设置为VARCHAR。