1

オブジェクトのリストがあります。これらのオブジェクトを、後続のオブジェクトに同じ日付が含まれている場合に最初の一意の日付のみが表示されるように表示したいと思います。日付が表示されるべきものと異なる場合。これが例です。

データ:

  • ID:2、日付:「2010年1月1日」
  • ID:3、日付:「2010年1月1日」
  • ID:4、日付:「2010年2月2日」

表示したいもの:

  • id-2、「2010年1月1日」
  • id-3、
  • id-4、「2010年2月2日」

前の日付が同じだったので、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
4

1 に答える 1

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()
于 2012-09-19T22:51:24.603 に答える