Django添加方法__unicode__()无效 的解决办法

来源:互联网 发布:foxpro是什么软件 编辑:程序博客网 时间:2024/06/05 20:32

初学Django,按照教程添加__unicode__()方法后不工作,还是显示默认的内容,教程是这么说的


为什么是 __unicode__() 而不是 __str__()?

如果你熟悉 Python,那么你可能会习惯在类中添加 __str__() 方法而不是 __unicode__() 方法。 We use 我们在这里使用 __unicode__() 是因为 Django 模型默认处理的是 Unicode 格式。当所有存储在数据库中的数据返回时都会转换为 Unicode 的格式。

Django 模型有个默认的 __str__() 方法 会去调用 __unicode__() 并将结果转换为 UTF-8 编码的字符串。这就意味着 unicode(p) 会返回一个 Unicode 字符串,而 str(p) 会返回一个以 UTF-8 编码的普通字符串。

如果这让你感觉困惑,那么你只要记住在模型中添加 __unicode__() 方法。 运气好的话,这些代码会正常运行。


思考了下可能是因为在python3.0以后默认字符都改成了unicode,导致这个在2.7下可以运行的方法在3.0中失效。

直接换成__str__() 运行正常。


(google了下没结果,写篇帖子留记录)