每次使用视图或上下文处理器时,我都需要进行查询。目前我使用了一个查询集。但我意识到我无法将其用于我的案例。
我需要像查询集一样进行查询以检索数据库中的最新对象。我需要再次重新评估它,以便用户看到新对象。
这就是我目前使用的内容:
class EntryListView(ListView):
model = Entry
def get_context_data(self, **kwargs):
context = super(EntryListView, self).get_context_data(**kwargs)
context.update({
'all_entries': Entry.objects.filter(status=2, publish_date__lte=datetime.date.today())[:40],
})
return context
如何进行查询,以便每次使用视图或上下文处理器时都会获取最新的40个对象?
现在的结果是它使用了缓存版本。所以它永远不会在网站上更新。
修改
我如何访问模板中的上下文是:
{% for post in all_entries %}
{% post.title %}
{% endfor %}
网址:
url(r'^all-entries/$', PostListView.as_view(template_name='all_entries.html'), name='all_entries'),
答案 0 :(得分:0)
您正在使用的此查询集转换为 - 获取状态为2且以date< = today发布的前40个Entry对象。使用此逻辑,查询集始终返回前40个条目 - 这解释了您认为视图缓存结果的原因。
Entry.objects.filter(status=2, publish_date__lte=datetime.date.today())[:40],
我们需要按降序排序结果,以便按照您想要的方式获得结果。我不知道你的模型看起来如何,但我假设publish_date是一个日期字段,所以我们不能使用它。如果您未明确指定主键,我们应该能够使用自动创建的 id 来订购我们的结果。
Entry.objects.filter(status=2, publish_date__lte=datetime.date.today()).order_by('-id')[:40]