有人可以在Django文档中解释“Python 2上的#__unicode__”的含义

时间:2017-09-10 19:02:41

标签: python django

# __unicode__ on Python 2

Django新手在这里,我试图搜索上述评论的含义,但无法找到相关信息。

在Django文档中,我在代码的许多部分找到了这个注释,这是否意味着本节仅在我使用Django和Python 2时才有意义?

我的意思是这样的功能

def __str__(self):              # __unicode__ on Python 2
            return "%s the place" % self.name

在此示例代码中:

from django.db import models

class Place(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)

    def __str__(self):              # __unicode__ on Python 2
        return "%s the place" % self.name

class Restaurant(models.Model):
    place = models.OneToOneField(
        Place,
        on_delete=models.CASCADE,
        primary_key=True,
    )
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)

    def __str__(self):              # __unicode__ on Python 2
        return "%s the restaurant" % self.place.name

class Waiter(models.Model):
    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)

    def __str__(self):              # __unicode__ on Python 2
        return "%s the waiter at %s" % (self.name, self.restaurant)

1 个答案:

答案 0 :(得分:1)

这意味着示例代码是用Python 3编写的,如果您正在编写Python 2应用程序,则应在类定义中将__unicode__替换为overflow:auto

Python 2和3在很多方面都有所不同,特别是在如何处理unicode和字符串方面。