我有一个通用ListView
,它返回一个对象列表。
在我决定打印自创建时间(而不仅仅是当创建对象)时为每个对象打印了多少时间之前,一切都很好。
然后我需要一段代码来计算它,我需要将结果传递给模板。 但现在我不能使用通用视图。
我考虑过context processors
,但context processors
仅将request
作为参数,我还需要给它一个对象的id
来计算时间增量。
那么,有没有办法让它使用通用视图或上下文处理器,或者我必须编写自定义视图?或者有更好的方法吗?
更新
感谢大家的详细解答,这对我将来会有很大的帮助。
我了解到可以使用timesince built-in template tag解决上述任务。希望它会帮助别人。
答案 0 :(得分:2)
您可以覆盖get_context_data
并向上下文词典添加更多数据:
class MyView(ListView):
# ...
def get_context_data(self, **kwargs):
context = super(MyView, self).get_context_data(**kwargs)
context['mydata'] = ...
return context
然后,您可以在模板中使用mydata
。
您还可以访问context['object_list']
,其中包含将在模板中显示的对象列表。
答案 1 :(得分:1)
如果您需要在特定ListView的上下文中添加更多内容,Simeon的答案显而易见,但如果您需要的东西不直接依赖于视图本身,您也可以使用自定义模板标签或过滤器。在您的情况下,从任何日期或日期时间计算增量的简单过滤器可能是票证。额外奖励:您可以在任何模板中的任何日期重复使用它,而无需更改视图中的任何内容......