【问题标题】:Why do you need this method inside a Django model?为什么在 Django 模型中需要这个方法?
【发布时间】:2011-02-17 00:20:47
【问题描述】:
class mytable(models.Model):
    abc = ...
    xyz = ...
    def __unicode__(self):

为什么需要def __unicode__

【问题讨论】:

    标签: python django unicode


    【解决方案1】:

    因此管理员可以显示其面包屑,您可以将 {{ myobject }} 放入模板中以显示您的对象的__unicode__

    【讨论】:

    • 在模板中,为什么要显示对象的unicode
    • 例如:<a href="{{ object.get_absolute_url }}">{{ object }}</a> 它是“unicode”而不是“str”,因为 django 到处都使用 unicode。
    【解决方案2】:

    __unicode__ 是一种 Python 的“魔术方法”,当您想将对象显示为 unicode 字符串时,它可以确定对象的外观。它不是 Django 特定的或任何东西,但任何时候您调用 str()unicode() 或使用字符串插值并将该对象传入,它都会调用该方法来确定返回的 unicode 字符串。

    对于模板中显示的对象,将调用此方法来确定模板中显示的内容,因为这是 Python 用来确定对象作为字符串的样子的方法。

    【讨论】:

      【解决方案3】:

      这些资源在解释我可以做到的方面做得更好:

      Django Docs
      Python Docs
      __str__ versus __unicode__

      简而言之,您需要定义__unicode__,以便Django 在您调用对象时可以打印一些可读的表示。 __unicode__ 也是返回字符串的“新”首选方式。

      【讨论】:

        【解决方案4】:

        根据我的经验,定义__unicode__ 方法有一个非常重要的原因:Django shell。

        在开发 Django 应用程序时,使用控制台通常是一个非常强大的工具,因为它允许检查您(和其他)类,以及快速的原型想法和解决方案。
        而且,在 shell 中工作时,每次你执行 print a 时,a 是一个模型实例,你会非常感谢有一个 __unicode__ 方法可以轻松识别你正在使用的对象。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-15
          • 2016-06-02
          • 2014-09-22
          • 2012-08-18
          相关资源
          最近更新 更多