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来处理字符串对象的转换。

最新文章

  1. js中的文本编辑器控件KindEditor---那些打酱油的日子
  2. PC使用网线上网的条件下,通过PC的Wifi共享提供手机上网教程
  3. JAVA的垃圾回收机制
  4. js动态更改对象属性值的方法
  5. 非阻塞同步算法实战(二)-BoundlessCyclicBarrier
  6. linux下的防火墙iptables
  7. js中判断输入的数字是否是数值类型
  8. SQL语句 - 嵌套查询
  9. bestcoder r44 p3 hdu 5270 ZYB loves Xor II
  10. 获取windows身份认证网站页面内容
  11. 一个简单的AMD模块加载器
  12. DesiredCapabilities参数配置及含义
  13. 二分图匹配 洛谷 [P3386]
  14. C#-Xamarin的Android项目开发(二)——控件应用
  15. springboot集合jpa使用
  16. CSS3实现Loading动画特效
  17. 动态库的链接和链接选项-L,-rpath-link,-rpath
  18. orm介绍
  19. redis 3.2.1 centos7
  20. c——分解数

热门文章

  1. openstack连接报错net_mlx5: cannot load glue library: libibverbs.so.1
  2. appium---app输入中文
  3. 5.2 RDD编程---键值对RDD
  4. python3 AES 加解密
  5. flask的request如何获取参数
  6. mac下命令行安装node.js及切换不同版本nodejs
  7. SpringBoot注解分析解释
  8. maven下载与配置(三)
  9. BZOJ练习记
  10. gif转mp4