为什么在Django模型中需要这个方法?
class mytable(models.Model):
abc = ...
xyz = ...
def __unicode__(self):
为什么需要 def __unicode__
这个东西呢?
4 个回答
1
这样管理员就可以显示面包屑导航了,你可以在模板里放入 {{ myobject }} 来显示你对象的 __unicode__
内容。
2
__unicode__
是 Python 中的一个“魔法方法”,它决定了当你想把一个对象显示为 Unicode 字符串时,这个对象看起来是什么样的。这个方法并不是 Django 特有的,而是 Python 的通用特性。每当你使用 str()
或 unicode()
,或者在字符串插值时传入这个对象,Python 就会调用这个方法来决定返回什么样的 Unicode 字符串。
在模板中显示的对象,也会调用这个方法来确定在模板中显示的内容,因为这是 Python 用来判断一个对象作为字符字符串时的样子的方法。
5
这些资源比我解释得更清楚:
Django 文档
Python 文档
__str__
和 __unicode__
的区别
简单来说,你需要定义 __unicode__
,这样当你调用一个对象时,Django 就能打印出一些可读的内容。__unicode__
也是返回字符字符串的“新”推荐方式。