2009-10-22 42 views
0

我的模型:在Django的URL的確認一些問題的意見

故事:

categories = models.ManyToManyField(Category) 

類別:名稱|塞

我的網址:

(r'^(?P<cat_slug>.*)/$', 'news.views.archive_category'), 

而且在意見,我使用:

def archive_category(request, cat_slug): 
    entry = News.objects.get(categories__slug=cat_slug) 
    return render_to_response('news_archive_category.html', {'entry':entry, }) 

它有什麼錯的,如果我有兩個或兩個以上的類別一個故事。請幫幫我。非常感謝!

回答

0
category = Category.objects.filter(slug=cat_slug)#get the category requested 
#now get all the entries which have that category 
entries = News.objects.filter(categories__in=category)#because of the many2many use __in 

後評論

+0

謝謝。但是如果我們這樣做會產生錯誤:'類別'對象不可迭代。 – anhtran 2009-10-23 04:01:41

+0

我的不好。使用過濾器而不是get。那麼就沒有必要嘗試/除了。該查詢集是可迭代的。 – 2009-10-25 01:46:00

+0

沒有必要嘗試/除了錯誤明智,但你可能想做一些事情來捕捉,如果沒有條目。在我的multiblog上,我只是把它放在一邊,並顯示沒有條目的請求的頁面。 – 2009-10-25 01:48:26

0

你想在這種情況下發生什麼?您是否想要顯示一個類別中的所有條目的列表,或者只是一個?

News.objects.get()總是獲取單個項目,或者如果有多個匹配條件,則引發異常。要麼你應該使用filter(),而是將QuerySet傳遞給模板,所以你需要迭代;或者,爲你的urlconf添加一個標準,這樣你就可以得到特定的入口slu so,所以你只能得到一個對象。

+0

使用編輯的過濾器的選項簡單。 – anhtran 2009-10-23 04:02:52