Ken*_*Ken 2 python django django-models
我正在从djangobook学习Django,在第6章中安装了admin应用程序,该syncdb命令返回语法错误models.py(return u'%s %s' % (self.first_name, self.last_name)
我正在使用Python 3.
为什么会这样?怎么解决?
models.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
Run Code Online (Sandbox Code Playgroud)
错误:
File "C:\Users\karthikeyan\Desktop\NightHawk\Hawk\books\models.py", line 20
return u'%s %s' % (self.first_name, self.last_name)
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
您在Python 3中使用Python 2语法.虽然Python 3.3及更高版本支持使用uunicode字符串值的前缀(以支持跨版本代码),但Python 3.2及之前没有 ; 删除u前缀以使其工作:
def __unicode__(self):
return '%s %s' % (self.first_name, self.last_name)
Run Code Online (Sandbox Code Playgroud)
但是,您还需要查阅Django 移植到Python 3文档并使用__str__,而不是__unicode__在这里:
def __str__(self):
return '%s %s' % (self.first_name, self.last_name)
Run Code Online (Sandbox Code Playgroud)
如果您正在阅读特定的书籍,则可能需要安装Python 2.
| 归档时间: |
|
| 查看次数: |
2014 次 |
| 最近记录: |