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

1 投票
4 回答
1699 浏览
提问于 2025-04-15 22:28
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__ 也是返回字符字符串的“新”推荐方式。

撰写回答