Django强制转换为Unicode:需要字符串或缓冲区,找到datetime.date

Dar*_*ech 10 django unicode datetime

我有一个模特:

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

在我的观点中,我有一个查询:

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)))
    ...
Run Code Online (Sandbox Code Playgroud)

但每当我尝试对查询集做任何事情时(例如json dump,在模板中显示),我都会收到以下错误:

    coercing to Unicode: need string or buffer, datetime.date found
Run Code Online (Sandbox Code Playgroud)

我知道必须有一个简单的方法来解决这个问题,但我还没有找到它.

任何帮助将非常感激.

编辑:

数据示例:

+----+-------------+---------------+
| id | recorded_on | precipitation |
+----+-------------+---------------+
| 24 | 1987-07-02  |          20.7 |
| 33 | 1987-07-11  |           0.4 |
+----+-------------+---------------+
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 23

您没有显示完整的代码,但我怀疑问题出在您的模型__unicode__方法上.这需要返回一个实际的unicode字符串 - 如果你刚刚这样做return self.recorded_on会因给定的错误而失败.例如return unicode(self.recorded_on),尝试类似的东西,或用于strftime转换为所需的日期格式self.recorded_on.strftime('%Y-%m-%d').