РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
133 of 818 menu

Атрибут verbose_name

Атрибут verbose_name определяется внутри внутреннего класса Meta модели Django. Он задает человекочитаемое имя модели в единственном числе, которое используется в административном интерфейсе, в сообщениях об ошибках и в других местах, где требуется отображать название модели для пользователя. Если атрибут не задан, Django автоматически генерирует имя на основе имени класса модели, заменяя заглавные буквы на пробелы.

Синтаксис

class Meta: verbose_name = 'человекочитаемое имя'

Пример

Рассмотрим модель Article с заданным атрибутом verbose_name:

from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) class Meta: verbose_name = 'статья' verbose_name_plural = 'статьи' def __str__(self): return self.title

В административном интерфейсе Django модель Article будет отображаться как "Статьи" в списке моделей, а при добавлении новой записи будет использоваться имя "статья".

Пример

Рассмотрим пример модели UserProfile с атрибутом verbose_name:

from django.db import models from django.contrib.auth.models import User class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) bio = models.TextField(blank=True) birth_date = models.DateField(null=True, blank=True) class Meta: verbose_name = 'профиль пользователя' verbose_name_plural = 'профили пользователей' def __str__(self): return f'Profile of {self.user.username}'

Теперь при обращении к экземпляру модели в административном интерфейсе будет отображаться заданное человекочитаемое имя:

from myapp.models import UserProfile profile = UserProfile.objects.first() print(profile._meta.verbose_name)

Результат выполнения кода:

"профиль пользователя"

Пример

Если не задать verbose_name, Django автоматически создаст имя на основе имени класса модели:

from django.db import models class Category(models.Model): name = models.CharField(max_length=100) class Meta: # verbose_name не задан pass def __str__(self): return self.name

В этом случае Django сгенерирует имя "Category" автоматически, преобразовав его в "category" для единственного числа и "categorys" для множественного (что не всегда корректно с точки зрения английского языка):

from myapp.models import Category category = Category() print(category._meta.verbose_name) print(category._meta.verbose_name_plural)

Результат выполнения кода:

"category" "categorys"

Как видно, автоматически сгенерированное множественное число может быть некорректным, поэтому рекомендуется всегда явно задавать атрибут verbose_name_plural вместе с verbose_name.

Смотрите также

  • атрибут verbose_name_plural,
    который задает человекочитаемое имя модели во множественном числе
  • атрибут db_table,
    который определяет имя таблицы в базе данных
  • атрибут ordering,
    который задает сортировку записей по умолчанию
  • атрибут abstract,
    который делает модель абстрактной
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить