2011-11-29 75 views
5

我有一個相當簡單的模型,使用Django Taggit進行標記。如何爲django-taggit創建列表和詳細視圖?

一切都很好,但現在我想擴展一些功能,我有點困惑。

我想要的是兩個視圖。

一個顯示系統中我所有的標籤。 一個使用特定標籤顯示來自我的應用的所有內容。

對我來說有意義的是對每個視圖執行以下操作。

在views.py爲MYAPP

  1. 所有標籤

    從myapp.models導入應用

    從taggit.models導入標籤

    類標記列表(ListView控件):

    「」「獲取數據庫中的所有標籤」「」

    queryset = Tag.objects.all() 
    template_name = "myapp/TagList.html" 
    paginate_by = 10 
    
  2. 所有內容從myapp.models一個標籤

    導入應用

    從taggit.models導入標籤

    類TaggedList(ListView控件): 「」」獲得所有爲標籤「」「

    template_name = "myapp/TaggedList.html" 
    
    def get_object(self): 
        return get_list_or_404(App, tag__iexact=self.kwargs['tag']) 
    

我失去了理智,還是真的那麼容易?順便說一句,我使用的是泛型類視圖。

感謝您的幫助。 戴夫

+0

好的,所以第一個很好,這就是我可以做到的。 –

+0

第二個是不行的。我收到一個整數錯誤,告訴我我要求錯誤的東西。 –

+0

return get_list_or_404(App,tags = self.kwargs ['tag']) - 這就是我正在使用的查詢 –

回答

3

2. 我相信這是爲了返回一個單一的對象,而不是多個對象。

def get_object(self): 

相反,也許你應該嘗試類似以下內容:

def get_queryset(self): 
    return TaggedItem.objects.filter(tag__iexact=self.kwargs['tag']) 

這將返回的項目與GenericForeignKeys

如果你只叫應用程序,然後

一個特定的模式感興趣列表
return App.objects.filter(tags__name__in=[self.kwargs['tag']]) 

模板中的默認變量名稱爲TaggedItem_list那麼

{% for item in TaggedItem_list %} 
    {{item.content_object}} {# generic foreign key here #} 
{% endfor %} 

這個網址。py將不得不類似於

url(r'someapp/(?P<tag>\w+)/$', TaggedList.as_view()) 
相關問題