添加模块的字符串表现
当我们打印整个publisher列表时,我们没有得到想要的有用信息,无法把对象区分开来:
[<Publisher: Publisher object>, <Publisher: Publisher object>]
我们可以简单解决这个问题,只需要为Publisher 对象添加一个方法 __unicode__() 。 __unicode__() 方法告诉Python如何将对象以unicode的方式显示出来。 为以上三个模型添加__unicode__()方法后,就可以看到效果了:
from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=50) city = models.CharField(max_length=60) state_province = models.CharField(max_length=30) country = models.CharField(max_length=50) website = models.URLField() **def __unicode__(self):** **return self.name** class Author(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=40) email = models.EmailField() **def __unicode__(self):** **return u'%s %s' % (self.first_name, self.last_name)** class Book(models.Model): title = models.CharField(max_length=100) authors = models.ManyToManyField(Author) publisher = models.ForeignKey(Publisher) publication_date = models.DateField() **def __unicode__(self):** **return self.title**
就象你看到的一样, __unicode__() 方法可以进行任何处理来返回对一个对象的表示。在这里,Publisher 和Book 的__unicode__() 方法分别返回对象的name和title属性值,而Authoer的__unicode__() 方法则稍微复杂一些,她将first_name 和last_name 字段值以空格连接后再返回。 翻译时,后台会出现500错误。
python3中的__unicode__()不起作用,用__str__()就可以