如何获取查询集列表并在Django中进行自定义筛选

时间:2010-03-03 04:23:05

标签: django django-models django-templates django-forms django-views

我有一些这样的代码:

cats = Category.objects.filter(is_featured=True)
for cat in cats:
    entries = Entry.objects.filter(score>=10, category=cat).order_by("-pub_date")[:10]

但是,结果只显示猫的最后一项,并且在过滤器中“> =”的位置也有问题。帮我解决这些问题。非常感谢!

2 个答案:

答案 0 :(得分:2)

您可能需要先阅读有关此主题的django docs。但是,为了让您入门,filter()方法就像任何其他方法一样,因为它只接受参数和关键字参数,而不是表达式。所以,你不能说foo <= bar,而只是foo=bar。 Django通过允许关键字名称指示与您传入的值的关系来解决此限制。在您的情况下,您可能希望使用:

Entry.objects.filter(score__gte=10)

字段名称后面的__gte表示要执行的比较(score >= 10)。

答案 1 :(得分:1)

您不会在for循环的每次迭代中附加entries,因此您只能获得最后一个类别的结果。试试这个:

entries = Entry.objects.filter(score__gte=10, category__is_featured=True).order_by("-pub_date")[:10]