Django shell:使用unicode的模型到字符串失败/失败

时间:2011-04-12 12:56:36

标签: django unicode model string

有人可以给我一个暗示,为什么模型实例名称中的变音符号会被转换为垃圾,但是当 unicode()是'print()'时会正确打印?

class Geo(Position):
    name = models.CharField(max_length = 161)

    def __unicode__(self):
        return u'%s' % self.name

在shell中:

In [10]: Geo.objects.get(pk=1)
Out[10]: <Geo: Eichstätt>
In [11]: print Geo.objects.get(pk=1).__unicode__()
Eichstätt

2 个答案:

答案 0 :(得分:1)

打印时会调用

Geo。 repr (),但不会 unicode 编辑:http://docs.python.org/library/functions.html#repr 另外我不确定为什么解析器在方法名称

中得到了下划线

答案 1 :(得分:1)

如果您从print语句的末尾离开__unicode__(),您会发现它仍能正常工作。那是因为当你调用print时会自动调用该方法。

当您只在解释器中键入对象的名称时,调用的方法是__repr__

请注意,Django的模型实例都在内部使用unicode,因此实际上__unicode__方法可能只是return self.name