python - __unicode__ 在获取字符串表示时未调用 Django/Python 项目中的某些对象

标签 python django

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/

相关文章:

django - 类(class)没有 'objects' 成员

python - 缺少 1 个必需的位置参数 : 'response' scrapy

python - 将引擎从 dot 更改为 neato 时未找到 graphviz PATH 变量

python - Django 中的提及/内部链接

python - 使用查询集从 Django 获取百万记录很慢

django - GeoDjango - LayerMapping : An error occurred in the current transaction. 在 'atomic' block 结束之前你不能执行查询

python - 如何检测 obj 是否在 ModelForm.clean 中添加或编辑?

python - 在 Django 中将 JSON 显示为表

python - 将列表转换为列表python中的随机列表

python - 如何将自签名证书添加到 PyCharm?