我有一个模特:
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 |
+----+-------------+---------------+
答案 0 :(得分:23)
您尚未显示完整代码,但我怀疑问题出在您的模型的__unicode__
方法上。这需要返回一个实际的unicode字符串 - 如果您只是执行return self.recorded_on
,它将因给定错误而失败。尝试使用return unicode(self.recorded_on)
之类的内容,或使用strftime
转换为所需的日期格式,例如self.recorded_on.strftime('%Y-%m-%d')
。