0

私はジャンゴ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

私がやろうとしているのは、URL でスラッグを使用することです。sth-like-this

そして最後に。

django管理者が必要な投稿のタイトルによってスラッグを自動的に生成するための prepopulated_fields が必要です。

しかし、私のプロジェクトでは、django の管理者を使用するつもりはありません。新しい管理ページをコーディングしています。

このために何ができますか?

ありがとうございました。

4

1 に答える 1

1

データベースをチェックしましたか?slugSQLクエリを実行してフィールドを作成する必要があります。テーブルがどのように見えるかを知るには

python manage.py sql userside

あなたの質問にあるように、dbshel​​l で次のクエリを実行する必要があります (これは MySQL データベース用です)。

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

また、データベースの移行にはを使用することをお勧めします。

于 2012-08-02T13:08:39.827 に答える