关于django模型里面的__str__和__unicode__
python3 django模型里面 使用 __str__ 如果使用__unicode__是无效的
简而言之,就是__str__和__unicode__都是为了再管理站点中加载这个表时想显示什么属性,当然一般都是显示一个name,大体来讲是通用的。下面是抄的csdn上面的一篇文章。
str()是Python的一个“魔幻”方法,这个方法定义了当object调用str()时应该返回的值。Django在许多地方使用str(obj)(或者相关方法,unicode(obj)——见下文),比如说在Django管理站点加载一个对象时显示它的值或者作为对象的显示值插入模板中。因此,我们应该总是返回一个友好的,用户可读的字符串作为对象的str。尽管这不是必须的,但还是建议这么做。例如:
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
def __str__(self):
# Note use of django.utils.encoding.smart_str() here because
# first_name and last_name will be unicode strings.
return smart_str('%s %s' % (self.first_name, self.last_name)
unicode()方法是在一个对象上调用unicode()时被调用的。因为Django的数据库后端会返回Unicode字符串给model属性,所以我们通常会给自己的model写一个unicode()方法。前面的例子也可以更简单地写成:
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
如果定义了unicode()方法但是没有定义str()方法,Django会自动提供一个str()方法调用unicode()方法,然后把结果转换为UTF-8编码的字符串对象。在实际开发中,建议:只定义unicode()方法,需要的话让Django来处理字符串对象的转换。
最新文章
- js中的文本编辑器控件KindEditor---那些打酱油的日子
- PC使用网线上网的条件下,通过PC的Wifi共享提供手机上网教程
- JAVA的垃圾回收机制
- js动态更改对象属性值的方法
- 非阻塞同步算法实战(二)-BoundlessCyclicBarrier
- linux下的防火墙iptables
- js中判断输入的数字是否是数值类型
- SQL语句 - 嵌套查询
- bestcoder r44 p3 hdu 5270 ZYB loves Xor II
- 获取windows身份认证网站页面内容
- 一个简单的AMD模块加载器
- DesiredCapabilities参数配置及含义
- 二分图匹配 洛谷 [P3386]
- C#-Xamarin的Android项目开发(二)——控件应用
- springboot集合jpa使用
- CSS3实现Loading动画特效
- 动态库的链接和链接选项-L,-rpath-link,-rpath
- orm介绍
- redis 3.2.1 centos7
- c——分解数