Django datetime字段(带有sqlite数据库)返回unicode

时间:2012-01-05 03:30:15

标签: python django sqlite datetime

我正在编写一个小型Django应用程序,它显示sqlite3数据库中的一些简单值。我的问题是,虽然其中一个字段是DateTimeField,但在查询时我得到该字段的unicode值。这是模型的相关部分:

class Totals(models.Model):
    time = models.DateTimeField(primary_key=True, blank=False)
    ..

现在,如果我在Django shell中输入Totals.objects.all()[0].time(当然在导入Totals之后),我得到u'2012-01-03 04:02:56.966'。这是正常的行为,因为我正在使用sqlite,或者有什么问题吗?我不确定这是否相关,但我已经自动生成模型,因为我已经拥有了我想要使用的数据库。自动生成过程自然地将所有字段类型都扣除为文本,因此我相应地修改了它们。

1 个答案:

答案 0 :(得分:2)

对于什么是值得的,我没有使用sqlite得到那种行为(我只是得到一个datetime.datetime对象),我完全按照你在问题中提供的方式定义了模型。

我的猜测是,在模型的自动生成过程中存在一些问题,并且它们与数据库中的模式不匹配。因此,我建议验证从这些模型生成的模式是否实际匹配。

就我而言,我看到的内容如下:

$ python manage.py sql <appname>
...
CREATE TABLE "<appname>_totals" (
"time" datetime NOT NULL PRIMARY KEY
)
;


$ sqlite3 <database_filename>
.schema <app_name>_totals
CREATE TABLE "<app_name>_totals" (
"time" datetime NOT NULL PRIMARY KEY
);

注意:我也在使用Ubuntu 11.10和python 2.7.2以及django 1.3.0