Django Book: изменение заголовков полей

Автор: | 03/25/2015
 

django_logo_2Предыдущая часть.

В форме редактирования моделей в панели управления имя каждой формы генерируется из имени поля модели. Алгоритм генерации очень простой — Django меняет знаки подчёркивания на пробелы, а первые буквы слов переводит в заглавные буквы. Т.е., например модель publication_date приложения Book будет отображена как «Publication date«.

Однако, иногда вам может понадобится изменить такие заголовки. Это можно сделать, указав verbose_name для модели.

Например, вот как можно изменить поле Author.email на «e-mail«, который, напомним, выглядит так:

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField(blank=True)

django_admin_4

Добавим к нему verbose_name='e-mail' в поле email:

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField(blank=True, verbose_name='e-mail')

django_admin_5

Помните, что вам не нужно указывать заглавные буквы, кроме случаев, когда они должны быть таким всегда, например — «штат США». Django автоматически переведёт их, когда потребуется, и будет использовать оригинальное написание verbose_name в других местах, в которых не требуется использование заглавных букв в имени.

Вы можете передать verbose_name как позиционный аргумент, для более компактной записи. Вот, например, как можно записать нашу предыдущую форму:

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField('e-mail', blank=True)

Однако, такой метод не будет работать с полями ManyToManyField  или ForeignKey, так как для них первым аргументом требуется передать класс модели. В таком случае — вы можете передать verbose_name явно.