我正在编写一个小型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,或者有什么问题吗?我不确定这是否相关,但我已经自动生成模型,因为我已经拥有了我想要使用的数据库。自动生成过程自然地将所有字段类型都扣除为文本,因此我相应地修改了它们。
答案 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