我有一些这样的代码:
cats = Category.objects.filter(is_featured=True)
for cat in cats:
entries = Entry.objects.filter(score>=10, category=cat).order_by("-pub_date")[:10]
但是,结果只显示了猫的最后一项,并且过滤器中的 where ">=" 也存在问题。帮我解决这些问题。非常感谢!
我有一些这样的代码:
cats = Category.objects.filter(is_featured=True)
for cat in cats:
entries = Entry.objects.filter(score>=10, category=cat).order_by("-pub_date")[:10]
但是,结果只显示了猫的最后一项,并且过滤器中的 where ">=" 也存在问题。帮我解决这些问题。非常感谢!
您可能想从阅读有关此主题的django 文档开始。但是,为了让您入门,该filter()
方法与任何其他方法一样,因为它只接受参数和关键字参数,而不是表达式。所以,你不能说foo <= bar
,只是foo=bar
。Django 通过允许关键字名称指示与您传入的值的关系来解决此限制。在您的情况下,您可能希望使用:
Entry.objects.filter(score__gte=10)
附加到字段名称的__gte
表示要执行的比较 ( score >= 10
)。
您没有附加到entries
for 循环的每次迭代,因此您只能获得最后一个类别的结果。试试这个:
entries = Entry.objects.filter(score__gte=10, category__is_featured=True).order_by("-pub_date")[:10]