Как написать метки для кодов в HTML-файл с Django? - PullRequest
0 голосов
/ 03 июня 2018

В руководстве по Django 2.2 стр. 86 есть следующий код:

from django.db import models

class Person(models.Model):
    SHIRT_SIZES = (
            ('S', 'Small'),
            ('M', 'Medium'),
            ('L', 'Large'),
                       )
    name = models.CharField(max_length=60)
    shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)

Затем объясняется, что я получаю что-то вроде 'L', используя p.shirt_size и 'Large', используя p.get_shirt_size_display().

Но можно ли получить это в HTML-файле?Я получаю 'L' с {{p.shirt_size}}, но если я хочу, чтобы фактическое описание было напечатано в HTML-файле, как мне это сделать?{{p.get_shirt_size_display ()}} не работает, не так ли?Как правильно решить эту проблему?

1 Ответ

0 голосов
/ 03 июня 2018

Вы совсем близко.Если поле имеет параметр choices=..., вы можете использовать функцию get_fieldname_display(), чтобы получить соответствующее отображение этого выбора.

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

{{ p.<b>get_shirt_size_display</b> }}

Поэтому опустите скобки.

Как указано в документации, такая "переменная" разрешена в Djangoшаблоны типа :

За кулисами

Технически, когда система шаблонов встречает точку, она пытается выполнить следующие поиски в следующем порядке:

  1. Поиск по словарю
  2. Поиск по атрибуту или методу
  3. Поиск по числовому индексу

Если полученное значение может быть вызвано, оновызывается без аргументов .Результатом вызова становится значение шаблона.

...