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

By | 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 явно.