django BUG!!! === Django model "coercing to Unicode: need string or buffer, XXX found"

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

在models中,__unicode__(self) return self.datetime ------> return "%s" % self.datetime
                  return self.int ---------->return "%d" % self.int

def __unicode__(self):
return self.title
__unicode__() 方法可以进行任何处理来返回对一个对象的字符串表示。 Publisher和Book对象的__unicode__()方法简单地返回各自的名称和标题,
Author对象的__unicode__()方法则稍微复杂一些,它将first_name和last_name字段值以空格连接后再返回。
对__unicode__()的唯一要求就是它要返回一个unicode对象 如果`` __unicode__()`` 方法未返回一个Unicode对象,而返回比如说一个整型数字,
那么Python将抛出一个`` TypeError`` 错误,并提示:”coercing to Unicode: need string or buffer, int found” 。
unicode对象就是一个Python字符串.
Unicode对象并没有编码。它们使用Unicode,一个一致的,通用的字符编码集。 当你在Python中处理Unicode对象的时候,你可以直接将它们混合使用和互相匹配而不必去考虑编码细节。
Django 在其内部的各个方面都使用到了 Unicode 对象。 模型 对象中,检索匹配方面的操作使用的是 Unicode 对象,视图 函数之间的交互使用的是 Unicode 对象,
模板的渲染也是用的 Unicode 对象。通常,我们不必担心编码是否正确,后台会处理的很好。
为了让我们的修改生效,先退出Python Shell,然后再次运行 python manage.py shell 进入。(这是保证代码修改生效的最简单方法。)
>>> publisher_list = Publisher.objects.all()
>>> publisher_list
[<Publisher: Apress>]
posted @ 2012-12-24 16:22  事件轮询,回不到过去  阅读(3217)  评论(0编辑  收藏  举报