Django中的Unicode使用
为什么在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__()
方法。