Атрибут verbose_name_plural

Атрибут verbose_name_plural применяется к классу Meta модели для явного указания формы названия модели во множественном числе. По умолчанию Django автоматически добавляет "s" к значению атрибута verbose_name, но это правило не работает для исключений (например, "news", "people"). Атрибут позволяет задать корректное отображение модели в административной панели и других местах, где используется человекочитаемое имя модели.

Синтаксис

pythonclass Meta:
  verbose_name_plural = "Название_во_множественном_числе"

Пример

Рассмотрим модель, для которой стандартное образование множественного числа не подходит:

pythonfrom django.db import models

class News(models.Model):
  title = models.CharField(max_length=200)
  content = models.TextField()
  published_at = models.DateTimeField()

  class Meta:
    verbose_name = "Новость"
    verbose_name_plural = "Новости"  # Явно указываем корректное множественное число

В административной панели будет отображаться "Новости" вместо автоматического "Новостьs".

Пример

Используем атрибут для модели, где множественное число образуется нестандартно:

pythonfrom django.db import models

class Person(models.Model):
  first_name = models.CharField(max_length=50)
  last_name = models.CharField(max_length=50)

  class Meta:
    verbose_name = "Человек"
    verbose_name_plural = "Люди"  # Исключение из правил английского языка

Теперь в административной панели отображается "Люди", что грамматически верно.

Пример

Если не указывать verbose_name_plural, Django пытается образовать множественное число автоматически, но часто делает это неправильно:

pythonfrom django.db import models

class Category(models.Model):
  name = models.CharField(max_length=100)

  class Meta:
    verbose_name = "Категория"
    # verbose_name_plural не указан,
    # Django использует "Категорияs" (неверно)

Правильное использование атрибута:

pythonfrom django.db import models

class Category(models.Model):
  name = models.CharField(max_length=100)

  class Meta:
    verbose_name = "Категория"
    verbose_name_plural = "Категории"  # Явно указываем

Теперь название отображается корректно: "Категории".

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

  • атрибут verbose_name,
    который задает название модели в единственном числе
  • атрибут db_table,
    который определяет имя таблицы в базе данных
  • атрибут ordering,
    который задает сортировку записей по умолчанию
  • атрибут abstract,
    который делает модель абстрактной