Django принуждение к Unicode: нужна строка или буфер, datetime.date найдено
У меня есть модель:
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
Я знаю, что должен быть простой способ справиться с этим, но я еще не нашел его.
Любая помощь будет высоко оценена.
EDIT:
Пример данных:
+----+-------------+---------------+
| id | recorded_on | precipitation |
+----+-------------+---------------+
| 24 | 1987-07-02 | 20.7 |
| 33 | 1987-07-11 | 0.4 |
+----+-------------+---------------+
Ответы
Ответ 1
Вы не указали полный код, но я подозреваю, что проблема связана с вашим методом модели __unicode__
. Это должно вернуть фактическую строку юникода - если вы просто делаете return self.recorded_on
, который будет терпеть неудачу с данной ошибкой. Попробуйте что-то вроде return unicode(self.recorded_on)
или используйте strftime
для преобразования в нужное форматирование даты, например self.recorded_on.strftime('%Y-%m-%d')
.