如何将过滤器添加到django中的值来自URL的查询集中?

时间:2017-02-18 12:18:48

标签: python django

views.py

class ListPosts(generic.ListView):
    template_name = 'posts/list_posts.html'
    context_object_name = 'list_posts'

    def get_queryset(self):
        #kwargs={ "slug": user.slug }
        qs = Post.objects.all().filter(user=self.request.user)
        return qs

此处添加了过滤器,因此查询集仅过滤登录用户的帖子。 我的问题是如何显示来自URL中的slug的用户值的帖子

urls.py

url(r'^(?P<slug>[\w.@+-]+)/Posts/$', ListPosts.as_view(), name='user_posts'),

示例:username/posts 我知道可以通过从URL传递kwargs来完成。但是我如何在同一视图中使用两种不同的模型?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望使用URL中的slug值进行过滤。您可以使用self.kwargs字典访问它。可以这样做:

class ListPosts(generic.ListView):
    template_name = 'posts/list_posts.html'
    context_object_name = 'list_posts'

    def get_queryset(self):
        qs = Post.objects.filter(
            user=self.request.user,
            some_field=self.kwargs['slug'])
        return qs

答案 1 :(得分:0)

views.py

def get_queryset(self):
    qs = Posts.objects.all().filter(user__slug__exact=self.kwargs['slug'])
    return qs

我发现Django:对于带有基数为10的int()的无效文字“&gt;这是为了解决这个问题。

Quote.objects.filter([model]__[field]__exact = [whatever])