我在我的视图中有这行代码,允许我按日期显示一组项目(我也颠倒了顺序,因此最新的显示首先显示):
currentlinks = Current.objects.order_by('date_added').reverse()[:5]
工作正常,但是,当我将order_by
代码与过滤器...
currentsources = Current.objects.filter(source__exact='bbc').order_by('date_added')
为什么这不起作用?或许语法不好,或者我只是不理解这应该如何工作?
答案 0 :(得分:1)
如果没有Current
个对象的source
为“bbc”,那么您当然会得到一个空的结果集。这是你的意思不起作用?如果没有,请发布您获得的结果。
更新:还有一件事要尝试:启动
manage.py shell
然后在shell中,评估给出问题的查询集。
currentsources = Current.objects.filter(source__exact='bbc').order_by('date_added')
然后,执行以下操作:
from django.db.import connection
connection.queries
这将显示为查询集执行的原始SQL。它应该有助于解决这个问题。
答案 1 :(得分:0)
我在您的查询中注意到的一件事:如果您尝试撤消订单以便首先显示更新的日期,则可以使用以下语法:
currentlinks = Current.objects.order_by(' - date_added')
场地前面的减号反转顺序。它大致等同于SQL中的以下语法:
SELECT * FROM current_links ORDER BY date_added DESC
如果你在filter()之后链接它,order_by()应该有效,只要filter()有效。