Советы для Джанго

Получение имени (Verbose Name) модели или объекта из шаблона

Предположим, у нас есть такой пример модели:

from django.db import models

class Snippet(models.Model):

    ....

    class Meta:
        verbose_name = 'Snippet'
        verbose_name_plural = 'Snippets'

И возникла необходимость вывести подробное имя (Verbose Name) в шаблонах Django.

При попытке сделать это также как и в коде Python ничего {{ object._meta.verbose_name }} не получится, так как шаблонизатор Django не дает доступ к приватному объекту _meta.

Но для решения проблемы можно сделать простой шаблонный фильтр.

Создаем файл templatetags/my_tags.py, который содержит такой код:

from django import template
register = template.Library()


@register.filter
def verbose_name(obj):
    return obj._meta.verbose_name


@register.filter
def verbose_name_plural(obj):
    return obj._meta.verbose_name_plural

Теперь можно выводить имя модели в шаблоных с помощью этого фильтра:

{% load my_tags %}
{{ object|verbose_name }}
{{ object|verbose_name_plural }}

Поделитесь с другими: