我有一些代码是这样的:如何获得查询集的名单,并自定义过滤器在Django
cats = Category.objects.filter(is_featured=True)
for cat in cats:
entries = Entry.objects.filter(score>=10, category=cat).order_by("-pub_date")[:10]
但是,结果只显示猫的最后一个项目,也有其中“> =问题“在过滤器中。帮我解决这些问题。非常感谢!
我有一些代码是这样的:如何获得查询集的名单,并自定义过滤器在Django
cats = Category.objects.filter(is_featured=True)
for cat in cats:
entries = Entry.objects.filter(score>=10, category=cat).order_by("-pub_date")[:10]
但是,结果只显示猫的最后一个项目,也有其中“> =问题“在过滤器中。帮我解决这些问题。非常感谢!
您在for循环的每次迭代中都不会追加到entries
,因此您只能得到最后一个类别的结果。试试这个:
entries = Entry.objects.filter(score__gte=10, category__is_featured=True).order_by("-pub_date")[:10]
您可能需要阅读关于此主题的django docs。然而,为了让你开始,filter()
方法就像其他方法一样,只需要参数和关键字参数,而不是表达式。所以,你不能说foo <= bar
,只是foo=bar
。 。Django的允许关键字名来表示你在传递值之间的关系来解决这个限制,在你的情况,你可能需要使用:
Entry.objects.filter(score__gte=10)
的__gte
追加到字段名称指示要执行的比较(score >= 10
)。