Атрибут verbose_name_plural
Атрибут verbose_name_plural применяется к классу Meta модели для явного указания формы названия модели во множественном числе. По умолчанию Django автоматически добавляет "s" к значению атрибута verbose_name, но это правило не работает для исключений (например, "news", "people"). Атрибут позволяет задать корректное отображение модели в административной панели и других местах, где используется человекочитаемое имя модели.
Синтаксис
class Meta:
verbose_name_plural = "Название_во_множественном_числе"
Пример
Рассмотрим модель, для которой стандартное образование множественного числа не подходит:
from 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".
Пример
Используем атрибут для модели, где множественное число образуется нестандартно:
from 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 пытается образовать множественное число автоматически, но часто делает это неправильно:
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
class Meta:
verbose_name = "Категория"
# verbose_name_plural не указан,
# Django использует "Категорияs" (неверно)
Правильное использование атрибута:
from 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,
который делает модель абстрактной