有人可以给我一个暗示,为什么模型实例名称中的变音符号会被转换为垃圾,但是当 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
答案 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
。