gpt4 book ai didi

python - Django - def __unicode__(self) 中的语法错误

转载 作者:行者123 更新时间:2023-11-28 21:54:45 25 4
gpt4 key购买 nike

我正在从 djangobook 学习 Django,在第 6 章中,安装管理应用程序的地方,syncdb 命令在 models.py 中返回语法错误(返回 u'%s %s' % (self.first_name, self.last_name)

我正在使用 Python 3。

为什么会这样?如何解决?

模型.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

错误:

  File "C:\Users\ken\Desktop\NightHawk\Hawk\books\models.py", line 20
return u'%s %s' % (self.first_name, self.last_name)
^
SyntaxError: invalid syntax

最佳答案

您在 Python 3 中使用 Python 2 语法。尽管 Python 3.3 及更高版本支持对 unicode 字符串值使用 u 前缀(以支持跨版本代码),但 Python 3.2 及之前 不要;删除 u 前缀以使其工作:

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

但是,您还需要咨询 Django Porting to Python 3文档并在此处使用 __str__,而不是 __unicode__:

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

如果您正在阅读某本书,您可能需要安装 Python 2。

关于python - Django - def __unicode__(self) 中的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com