7

タグ付けにDjangoTaggitを使用するかなり単純なモデルがあります。

すべてがうまく機能しますが、今はいくつかの機能を拡張したいと思っており、少し混乱しています。

私が欲しいのは2つのビューです。

システム内のすべてのタグを表示するもの。特定のタグを付けてアプリのすべてのコンテンツを表示するもの。

私にとって理にかなっているのは、ビューごとに次のことを行うことです。

myappのviews.pyで

  1. すべてのタグ

    myapp.modelsからAppをインポートします

    taggit.modelsからインポートタグ

    クラスTagList(ListView):

    """データベース内のすべてのタグを取得します"""

    queryset = Tag.objects.all()
    template_name = "myapp/TagList.html"
    paginate_by = 10
    
  2. タグのすべてのコンテンツ

    myapp.modelsからAppをインポートします

    taggit.modelsからインポートタグ

    class TaggedList(ListView):"""タグのすべての競合を取得"""

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

頭がおかしくなったのでしょうか、それとも本当に簡単なのでしょうか。ところで、私はジェネリッククラスビューを使用しています。

助けてくれてありがとう。デイブ

4

1 に答える 1

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 %}

urls.pyは次のようになっている必要があります

url(r'someapp/(?P<tag>\w+)/$', TaggedList.as_view())
于 2011-12-08T05:46:59.447 に答える