【django】 models.py中插入函数__unicode__()

来源:互联网 发布:pc监控软件 编辑:程序博客网 时间:2024/05/20 21:19

django编写网页时采用MTV模式(model-Template-Veiw)


models.py中记录模型

请确保你的每一个模型里都包含 __unicode__() 方法,这不只是为了交互时方便,也是因为 Django会在其他一些地方用 __unicode__() 来显示对象。


without __unicode__():

from django.db import modelsclass 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()
启动 python manage.py shell 输入如下命令:

>>> from books.models import Publisher>>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue',...     city='Berkeley', state_province='CA', country='U.S.A.',...     website='http://www.apress.com/')>>> p1.save()>>> p2 = Publisher(name="O'Reilly", address='10 Fawcett St.',...     city='Cambridge', state_province='MA', country='U.S.A.',...     website='http://www.oreilly.com/')>>> p2.save()>>> publisher_list = Publisher.objects.all()>>> publisher_list[<Publisher: Publisher object>, <Publisher: Publisher object>]


With __unicode__():

from django.db import modelsclass 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
启动 python manage.py shell 输入如下命令:
>>> from books.models import Publisher>>> publisher_list = Publisher.objects.all()>>> publisher_list[<Publisher: Apress>, <Publisher: O'Reilly>]

就象你看到的一样, __unicode__() 方法可以进行任何处理来返回对一个对象的字符串表示。 Publisher对象的__unicode__()方法简单地返回名称name


对__unicode__()的唯一要求就是它要返回一个unicode对象 如果`` __unicode__()`` 方法未返回一个Unicode对象,而返回比如说一个整型数字,那么Python将抛出一个`` TypeError`` 错误,并提示:”coercing to Unicode: need string or buffer, int found” 。

0 0
原创粉丝点击