Django语法E

2024-04-24 18:56:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我从djangook学习Django,在第6章中,安装了管理应用程序,syncdb命令在models.pyreturn u'%s %s' % (self.first_name, self.last_name))中返回一个语法错误

我用的是python3。在

为什么会这样?如何修复?在

模型.py:

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

错误:

^{pr2}$

Tags: namepyselfmodelreturnmodelsdefunicode
1条回答
网友
1楼 · 发布于 2024-04-24 18:56:22

在python3中使用的是python2语法。尽管python3.3及更高版本支持对unicode字符串值使用u前缀(以支持跨版本代码),但python3.2及之前的版本不支持;删除u前缀以使其正常工作:

def __unicode__(self):
    return '%s %s' % (self.first_name, self.last_name)

但是,您还需要参考DjangoPorting to Python 3文档,并在此处使用__str__,而不是{}:

^{pr2}$

如果您正在阅读一本特定的书,那么您可能希望安装python2。在

相关问题 更多 >