0

私はブログとブログと投稿とカテゴリモデルと呼ばれるアプリを持っています。

url(r'^(?P<slug>[-\w]+)/$', ListView.as_view(
                    queryset=Post.objects.filter(category=4)[:5],
                    template_name='blog.html')),

私はこのような上記のコードを見ることができます

127.0.0.1 / category / php /

上記のURLで、カテゴリ4の5つの記事を見ることができます。動的にするために必要なもの..たとえば、Pythonはカテゴリ3です

queryset=Post.objects.filter(category='P<pk>\d')[:5]

これを試しましたが、機能しません。その他の方法で?

4

1 に答える 1

2

カスタムListViewを作成し、そこに機能を追加できます。

class BlogPostView(ListView):
    template_name = 'blog.html'

    def get(self, request, *args, **kwargs):
        slug = kwargs.get('slug')
        slug_id = ... # code here to determine id of slug's category
        self.queryset = Post.objects.filter(category=slug_id)[:5]
        return super(BlogPostView, self).get(request, *args, **kwargs)

URL構成として次のようになります。

url(r'^(?P<slug>[-\w]+)/$', BlogListView.as_view()),

DjangoはURL文字列/正規表現を解析して、どのパラメーターを持っているかを判断するだけです。文字列/正規表現を渡して、クエリセットのオブジェクトをフィルター処理することはできません。

于 2012-06-16T11:31:47.617 に答える