我刚开始使用Django,我正在浏览文档here来构建我的第一个应用程序,但是我遇到了与SQLite的数据库访问API相关的某种问题。
我的目录结构如下所示:
我编辑的唯一文件是models.py
和settings.py
,它是文档中的所有代码。
models.py:
from django.db import models
class Question(models.Model):
# ...
def __str__(self): # __unicode__ on Python 2
return self.question_text
class Choice(models.Model):
# ...
def __str__(self): # __unicode__ on Python 2
return self.choice_text
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
我对settings.py
所做的唯一更改是添加我的时区TIME_ZONE = 'US/Pacific'
并将'polls',
添加到INSTALLED_APPS
。
(为了完全披露,我已经设置我的urls.py
只是为了测试hello world,这不是文档的一部分,但我认为这不会导致问题。如果它是代码,那么这就是代码相关的。)
urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.views.debug import default_urlconf
from django.http import HttpResponse
def hello(request):
return HttpResponse('Hello world!!!')
urlpatterns = patterns('',
# Examples:
url(r'^$', hello),
# url(r'^blog/', include('blog.urls')),
#url(r'^admin/', include(admin.site.urls)),
#url(r'^$', default_urlconf),
)
现在,我遇到的问题是当我进入“使用API”部分时。当我在该部分中第二次打开python manage.py shell
时,我应该能够使用命令Question.objects.all()
并获得结果[<Question: What's up?>]
以及“什么事情?”是question_text
的价值。问题是我仍然得到结果[<Question: Question object>]
而不是question_text
值。
我已经回去并重新创建我的应用程序三次,希望我在设置期间遗漏了一些东西,但我每次都得到同样的问题,我似乎完全遵循文档。我在这里错过了什么吗?
答案 0 :(得分:1)
首先,确保models.py
的内容与教程中给出的内容相匹配
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self): # __str__ on Python 3
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200, default="")
votes = models.IntegerField(default=0)
def __unicode__(self): # __str__ on Python 3
return self.choice_text
还要确保迁移是最新的。
如果您正在运行python 2,请使用__unicode__
否则请使用__str__
。
那应该为你解决问题。