Django中的Unicode使用

19 投票
3 回答
24190 浏览
提问于 2025-04-15 16:31

为什么在models.py中需要一个unicode函数?

也就是说,

def __unicode__(self)
    return sumid;

3 个回答

5

我觉得其他人已经给出了很详细的解释,应该足够你理解了。不过我来简单说一下:__unicode__() 在 Python 中的作用和 Java(还有很多其他语言)里的 toString() 是一样的。

9

我对Django还比较陌生,但我想我可以帮你。

首先,这个字段并不是必须的,但加上它真的很有帮助。这个字段用来在Django的管理后台显示你对象的名称(否则它们都会叫一样的名字 :-P),而且当你在终端窗口打印一个对象时,它能让你看到更有用的信息(否则你得到的消息就很普通,没什么用)。

其次,从你写的内容来看,你似乎对Python也不太熟悉。我建议你先看看一些关于类语法的Python教程。另外,在这个语言里,分号并不是必须的。创建unicode方法的正确写法是:

class Foo(models.Model):
    # Model fields go here

    def __unicode__(self):
        return u"%i" % self.sumid

__unicode__方法前面有两个下划线,因为它是一个特殊的函数。当你用内置函数unicode( obj )调用它时,它会返回这个对象的unicode字符串表示(有点像Java里的ToString)。

希望这些对你有帮助 :-)

24

其实不是。如果你定义了一个 __unicode__() 方法,Django 在需要把一个对象转成字符串的地方会调用它,比如在模型的管理页面上。

文档中提到:

每当你对一个对象调用 unicode() 时,__unicode__() 方法就会被调用。因为 Django 的数据库后端会返回 Unicode 字符串到你模型的属性中,所以通常你会想为你的模型写一个 __unicode__() 方法。

撰写回答