django slugfield数据库错误

时间:2012-08-02 13:01:42

标签: django django-models

我使用django 1.4。

我得到了:

DatabaseError at / no such column: userside_post.slug

这是我的model.py

class Post(models.Model):
    title = models.CharField(max_length = 100)
    text  = models.TextField()
    slug = models.SlugField(unique=True)

    def __unicode__(self):
        return self.title

我的urls.py

urlpatterns = patterns('userside.views',
    url(r'^$','index'),
    url(r'^/(?P<postslug>_*)/$', 'userside.views.singlePost'),
)

我的views.py

def index(request):
    post_list = Post.objects.all()
    return render_to_response('userside/index.html',
                              {'post_list':post_list},
                              context_instance = RequestContext(request))

def singlePost(request,postslug):
    post = Post.objects.get(slug=postslug)
    context = {'post':post}
    return render_to_response('userside/detail.html',context,context_instance=RequestContext(request))

和我的模板文件:

{% if post_list %}
    {% for x in post_list %}
        <p><a href="/{{ x.slug }}/">{{ x.title }}</a></p>
        <p>{{ x.text }}</p>
        <hr>
    {% endfor %}
{% else %}
    <div class="center">No records! ( but looks like code works correctly!)</div>
{% endif %}

这是manage.py sql用户输出:

BEGIN;
CREATE TABLE "userside_post" (
    "id" integer NOT NULL PRIMARY KEY,
    "title" varchar(100) NOT NULL,
    "text" text NOT NULL,
    "slug" varchar(50) NOT NULL UNIQUE
)
;
COMMIT;

但是PRAGMA table_info()OUTPUT IS:

0|id|integer|1||1
1|title|varchar(100)|1||0
2|text|text|1||0

我想要做的是,在网址上使用slug。某物样本

最后一件事;

我希望prepopulated_fields通过帖子标题自动生成slugs,需要django admin。

但在我的项目中,我不打算使用django的管理员。我正在编写一个新的管理页面。

我能为此做些什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

你检查过数据库了吗?您需要通过运行SQL查询来创建slug字段。要了解你的表格应该如何运行

python manage.py sql userside

从我在你的问题中看到你应该在dbshel​​l中运行以下查询(这是针对MySQL数据库)

ALTER TABLE userside_post ADD slug VARCHAR(255) NOT NULL UNIQUE;

另外,我建议您使用south进行数据库迁移。