2014-07-24 3 views

ответ

9

Custom template filter поможет:

from django import template 

register = template.Library() 

@register.filter(name='private') 
def private(obj, attribute): 
    return getattr(obj, attribute) 

Вы можете использовать его таким образом:

{{ value|private:'_id' }} 
+0

Насколько медленнее является фильтром, чем прямая ссылка? Должен ли я оценивать это первым или использовать '$ project' в MongoDB при получении набора вместо того, чтобы грубо вставить его в 'id'? (списки могут составлять несколько сотен элементов) – user3467349

+0

@ user3467349 Если производительность действительно имеет значение здесь, я бы использовал '$ project', чтобы иметь« неединственное »имя атрибута, так как при использовании фильтра шаблона это был бы дополнительный вызов функции для каждый объект. Но, не оптимизируйте преждевременно, измерьте. Благодарю. – alecxe

+1

Если вы передаете словари шаблонам вместо объектов, используйте следующий фильтр: 'def private (dic, key): return dic [key]' –