我有一个对象列表。我想以这样的方式显示这些对象:如果后续对象包含相同的日期,则仅显示第一个唯一日期。如果日期不同于应显示的日期。这是一个例子。
数据:
我想要展示的内容:
看看自上一个日期以来id 3是如何显示的一样?
如何使用django模板执行此操作?我尝试过的一件事是创建一个自定义过滤器。唯一的问题是它使用了一个全局变量,在我看来这是一个禁忌。如何在函数过滤器或django模板语言中维护状态才能使之前的值有用?
__author__ = 'Dave'
#This works but isn't best practice
from django import template
register = template.Library()
a = ''
@register.filter()
def ensure_unique(value):
global a
if a == value:
return ''
else:
a = value
return value
答案 0 :(得分:1)
使用simple_tag使我更容易保存状态并完全满足我的需要。
from django import template
register = template.Library()
@register.simple_tag(takes_context=True)
def stop_repeat(context, event):
"""
Finds various types of links embedded in feed text and creates links out of them.
"""
if event.date:
if (event.get_date_time_location(), event.id) in context:
return ''
else:
context[(event.get_date_time_location(), event.id)] = (event.get_date_time_location(), event.id)
return event.get_date_time_location()