为什么在Django模型中需要这个方法?

时间:2010-05-07 21:07:12

标签: python django unicode

class mytable(models.Model):
    abc = ...
    xyz = ...
    def __unicode__(self):

为什么需要def __unicode__

4 个答案:

答案 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__方法,可以轻松识别你是什么对象与...合作。