Поле даты и времени Django (с базой данных sqlite) возвращает юникод - PullRequest
2 голосов
/ 05 января 2012

Я пишу небольшое приложение Django, которое отображает несколько простых значений из базы данных sqlite3. Моя проблема заключается в том, что хотя одним из полей является DateTimeField, я получаю значение Unicode для этого поля при запросе. Вот соответствующая часть модели:

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

Теперь, если я, например, наберу Totals.objects.all()[0].time в оболочке Django (после импорта итогов, конечно), я получу u'2012-01-03 04:02:56.966'. Возможно, это нормальное поведение, так как я использую sqlite, или что-то не так? Я не уверен, что это актуально, но модели были сгенерированы автоматически, так как у меня уже была база данных, которую я хотел использовать. Процедура автогенерации естественным образом вычитала все типы полей как текст, поэтому я исправил их соответствующим образом.

1 Ответ

2 голосов
/ 07 января 2012

Для чего бы то ни было, я не получаю такое поведение (я просто получаю datetime.datetime объект обратно), используя sqlite, и я определил модель точно так же, как вы указали в вопросе.

Я полагаю, что во время автогенерации моделей возникли некоторые проблемы, и они не соответствуют схеме в базе данных. Следовательно, я бы порекомендовал проверить, что схема, которая будет сгенерирована из этих моделей, действительно соответствует.

В моем случае я вижу следующее:

$ 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...