使用SQLite

时间:2015-09-02 21:09:17

标签: python django

我刚开始使用Django,我正在浏览文档here来构建我的第一个应用程序,但是我遇到了与SQLite的数据库访问API相关的某种问题。

我的目录结构如下所示:

我编辑的唯一文件是models.pysettings.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值。

我已经回去并重新创建我的应用程序三次,希望我在设置期间遗漏了一些东西,但我每次都得到同样的问题,我似乎完全遵循文档。我在这里错过了什么吗?

1 个答案:

答案 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__

那应该为你解决问题。