如何将django中的两个查询集列表与第二个列表后的第一个列表组合在一起

时间:2013-05-13 17:29:59

标签: python django

我的代码中有以下查询集。

new_date = date.today() - timedelta(days=7)
most_viewd_list = mytable.objects.filter(show_on_website=True).order_by('-most_viewd')
new_list = most_viewd_list.filter(date_created__gte=new_date)

现在,我想创建一个新的列表(results_list),在开头有new_list行,然后是most_viewed_list。

我已经尝试了How to combine 2 or more querysets in a Django view?中提到的选项,但它们都没有工作。

我试过以下选项...

 from itertools import chain
 result_list = list(chain(new_list, most_viewd_list))

但如果我使用result_list.count(),则使用此选项会导致错误。

并使用results_list = new_list | most_viewd_list选项,我没有得到理想的结果。

任何人都可以告诉我如何创建一个列表,其中包含new_list行,后跟most_viewed_list行。

由于

2 个答案:

答案 0 :(得分:1)

您的代码正在创建一个列表(您想要的类型)。您可以使用len len(result_list)来获取列表的长度。

答案 1 :(得分:1)

拿一个像这样的空列表

result_list=[]
result_list.append(most_viewd_list)
result_list.append(new_list)

例如:

a = [66.25, 333, 333, 1, 1234.5]
>>> print a.count(333), a.count(66.25), a.count('x')
2 1 0
>>> a.append(333)
>>> a
[66.25, 333, 333, 1, 1234.5, 333]