2013-09-24 68 views
0

我开始学习Django,并开始使用Django书籍。 我碰到这个概念,我有一个很难理解的逻辑..在Django中,为什么我需要__unicode__?

书中说 “Django使用整个框架Unicode对象。模型对象作为Unicode对象检索,视图与Unicode数据和模板的互动都是以Unicode编码的,一般来说,你不必担心确保你的编码是正确的,事情应该是正常的。“

那么为什么你需要做“def unicode()”以unicode打印?它不应该只用普通香草印刷品()吗?

+0

它的工作没有它,方法就是告诉它什么* *打印。 –

+0

仅供参考:在Python 3中,您需要'__str__'来代替。 – meshy

回答

4

您是否试过打印没有__unicode__方法的模型实例?你没有得到任何真正有用的东西。这就是__unicode__进场的地方。您可以定义每当您尝试在unicode上下文中使用它们时,模型实例的显示方式。

试试这个实验。创建一个简单的模型。现在打印出来:

class MyModel(models.Model): 
    name = models.CharField(max_length=20) 

>>> obj = MyModel("foo") 
>>> print obj 

看看你会得到什么。现在添加一个__unicode__()方法。

class MyModel(models.Model): 
    name = models.CharField(max_length=20) 

    def __unicode__(self): 
     return self.name 

运行一遍:

>>> obj = MyModel("foo") 
>>> print obj