在django中,为什么在某些类型的对象(模型等)上定义__unicode__
方法会导致打印print(obj)
__unicode__
的输出,但如果我创建自己的类,并定义 __unicode__
,它似乎没有被调用?我读过有关 __repr__
的内容,但似乎 Django 中的所有焦点都在 __unicode__
上。
两者之间有什么关系,在我的日志中获得我的对象的良好字符串表示的最佳实践是什么?
最佳答案
Django 模型类 defines __str__
for you像这样:
def __str__(self):
return unicode(self).encode('utf-8')
因此,当您print(obj)
(并且obj
是一个Model
)时,Python 调用obj.__str__()
调用 unicode(obj)
调用 obj.__unicode__()
。
如果您创建自己的类并像上面那样添加 __str__
的定义,那么您可以使用 __unicode__
返回对象的 unicode 表示形式,并具有该函数还控制对象的 str
表示。
关于python - __unicode__ 在获取字符串表示时未调用 Django/Python 项目中的某些对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21578602/