Приведение Django к Unicode: нужна строка или буфер, дата datetime.date найдена - PullRequest
10 голосов
/ 28 марта 2012

У меня есть модель:

class MyModel(models.Model):
    id = models.IntegerField(primary_key=True)
    recorded_on = models.DateField()
    precipitation = models.FloatField(null=True, blank=True)

в моих представлениях, у меня есть запрос таким образом:

import datetime

def my_view(request):
    ...
    format = '%Y-%m-%d' 
    sd = datetime.datetime.strptime(startdate, format)
    ed = datetime.datetime.strptime(enddate, format)
    queryset = MyModel.objects.filter((recorded_on__range = (sd, ed)))
    ...

Но всякий раз, когда я пытаюсь что-то делать с набором запросов (например, json dump,в шаблоне), я получаю следующую ошибку:

    coercing to Unicode: need string or buffer, datetime.date found

Я знаю, что должен быть простой способ справиться с этим, но я еще не нашел его.

Любая помощь будеточень цениться.

РЕДАКТИРОВАТЬ:

Пример данных:

+----+-------------+---------------+
| id | recorded_on | precipitation |
+----+-------------+---------------+
| 24 | 1987-07-02  |          20.7 |
| 33 | 1987-07-11  |           0.4 |
+----+-------------+---------------+

1 Ответ

23 голосов
/ 28 марта 2012

Вы не показали полный код, но я подозреваю, что проблема в методе __unicode__ вашей модели. Для этого необходимо вернуть фактическую строку в кодировке Unicode - если вы просто делаете return self.recorded_on, то произойдет сбой с данной ошибкой. Попробуйте что-то вроде return unicode(self.recorded_on) или используйте strftime для преобразования в желаемое форматирование даты, например self.recorded_on.strftime('%Y-%m-%d').

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