2012-08-02 89 views
0

我使用django 1.4。django slugfield數據庫錯誤

我越來越:

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 

我想要做的是,在網址上使用slu。。 sth-like-this

and last thing;

我希望prepopulated_fields自動生成slu posts帖子標題,這需要django管理員。

但在我的項目中,我不打算使用django的管理員。我正在編寫一個新的管理頁面。

我能爲此做些什麼?

謝謝。

回答

1

你檢查了你的數據庫嗎?您需要通過運行SQL查詢來創建slug字段。爲了有一個想法,你的表應該怎麼看起來像奔跑

python manage.py sql userside 

從我在你的問題看,你應該運行下面的dbshel​​l查詢(這是MySQL數據庫)

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

此外,我會建議您可以使用south進行數據庫遷移。

+0

是運行sql命令。即使我重新創建我的表。但它仍然是相同的 – alix 2012-08-02 13:15:00

+0

你檢查了'DESCRIBE TABLE userside_post;'?你可以通過添加該命令的輸出以及從「python manage.py sql userside」來編輯你的問題嗎? – 2012-08-02 13:19:34

+0

你是如何「重新創建」表格的。你是否真的放棄了它,然後再次運行CREATE TABLE或者只是運行'syncdb'。如果你在不刪除表的情況下運行'syncdb',它*不會*重新創建它或者以任何方式改變它。 – 2012-08-02 15:03:57