我使用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的管理员。我正在编写一个新的管理页面。
我能为此做些什么?
谢谢。
答案 0 :(得分:1)
你检查过数据库了吗?您需要通过运行SQL查询来创建slug
字段。要了解你的表格应该如何运行
python manage.py sql userside
从我在你的问题中看到你应该在dbshell中运行以下查询(这是针对MySQL数据库)
ALTER TABLE userside_post ADD slug VARCHAR(255) NOT NULL UNIQUE;
另外,我建议您使用south进行数据库迁移。