class mytable(models.Model):
abc = ...
xyz = ...
def __unicode__(self):
为什么需要def __unicode__
?
答案 0 :(得分:5)
这些资源可以更好地解释我可以:
Django Docs
Python Docs
__str__
versus __unicode__
简而言之,您需要定义__unicode__
,以便在调用对象时Django可以打印一些可读的表示。 __unicode__
也是返回字符串的'新'首选方式。
答案 1 :(得分:2)
__unicode__
是一种Python“魔术方法”,用于确定当您希望将该对象显示为unicode字符串时对象的外观。它不是Django特定的或任何东西,但是无论何时你调用str()
或unicode()
或使用字符串插值并传递该对象,它都会调用该方法来确定返回的unicode字符串。
对于模板中显示的对象,将调用此方法来确定模板中显示的内容,因为这是Python用于确定对象在字符串中的外观的方法。
答案 2 :(得分:1)
因此管理员可以显示其面包屑,您可以将{{myobject}}放入模板中以显示对象的__unicode__
。
答案 3 :(得分:1)
根据我的经验,有一个非常重要的原因可以定义__unicode__
方法:Django shell。
在开发Django应用程序时,使用控制台通常是一个非常强大的工具,因为它允许检查您的(和其他)类,以及快速原型想法和解决方案。
并且,在shell中工作,每次执行print a
a
是模型实例时,你会感谢很多__unicode__
方法,可以轻松识别你是什么对象与...合作。