在django视图中查询后对对象进行分组

时间:2013-12-19 18:40:57

标签: django views

我有一个Post表,每个帖子可能有三种类型之一; foo,bar或foobar。如果我从posts表中提取所有数据,我怎么能在查询所有对象后将这些类型中的每一个分配给变量。

def posts(request):
    posts = Posts.objects.all()

我不想做什么

def posts(request):
    a = Posts.objects.all().filter(type=foo)
    b = Posts.objects.all().filter(type=bar)
    c = Posts.objects.all().filter(type=foobar)

1 个答案:

答案 0 :(得分:0)

您可以对同一查询应用不同的过滤器:

posts = Posts.objects.all()
foo_posts = posts.filter(type='foo')
bar_posts = posts.filter(type='bar')
foobar_posts = posts.filter(type='foobar')

这意味着你可以这样做:

categories = ['foo', 'bar', 'foobar']
filtered_posts = Posts.objects.filter(**my_custom_query)
category_queries = {}
for category in categories:
    category_queries[category] = filtered_posts.filter(type=category)