我在使用 model.py 文件
时遇到了一些问题
model.py的代码是:
from django.db import models
import datetime
from django.utils import timezone
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()
def __unicode__(self):
return self.choice
当我运行此命令 python manage.py shell 时发生以下错误
File "/home/ghrix/testing/demo/polls/models.py", line 9
def __unicode__(self):
^
IndentationError: unindent does not match any outer indentation level
在我的model.py文件中添加一些代码行后发生此错误
从django.utils导入时区导入日期时间
在投票类
def __unicode__(self):
return self.question
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
在选择课
def __unicode__(self):
return self.choice
答案 0 :(得分:2)
Python对缩进非常敏感。您的特定代码应如下所示:
from django.db import models
import datetime
from django.utils import timezone
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()
def __unicode__(self):
return self.choice
请记住,建议的缩进是每个级别4个空格。您遇到的问题是,您应将Poll.question
之类的属性定义为与方法__unicode__
相同的级别。
答案 1 :(得分:0)
看起来你的代码有缩进错误。试试这个:
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()
def __unicode__(self):
return self.choice
课程Pool
也一样。
答案 2 :(得分:0)
看起来您可能在标签上混合了空格,请尝试运行:
python -m tabnanny models.py
并修复标签/空格缩进错误。根据{{3}} 总是使用空格而不是标签,这是一个好主意。
答案 3 :(得分:0)
请改用以下文件。你有缩进问题。请记住,同一级别的所有代码都应正确对齐。
您还应该确保不要在编辑器中混合使用空格和制表符。一般来说,最好坚持使用空间。关键是要确保你不要混合和匹配 - 否则你会得到类似的错误。
import datetime
from django.db import models
from django.utils import timezone
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return unicode(self.question)
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()
def __unicode__(self):
return unicode(self.choice)
答案 4 :(得分:0)
def __unicode__(self):
缩进比question =
和pub_date =
行更少。 def
应该与类中其余代码具有相同的缩进,如果它是类的一部分。
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
# the def should start at this indent level like the lines above
# <<<<<<<<
def __unicode__(self):
return self.question