0

我使用 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() 输出是:

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

我想要做的是,在 url 上使用 slug。sth-like-this

最后一件事;

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

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

我能为此做些什么?

谢谢你。

4

1 回答 1

1

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

python manage.py sql userside

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

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

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

于 2012-08-02T13:08:39.827 回答