Как вызвать get_foo_display в html-странице

Я хочу показывать в ListView человеческие значения в редактируемом формате вместо фактических значений. Например

От этого

| fc_mo | c_serv |
| ---   | ---    |
| 1     | 5      |

К этому

| fc_mo | c_serv     |
| ---   | ---        |
| 1     | cardiology |

Или проверить его значения

Я пытался вызвать его несколькими способами, но он всегда не получает от него никаких данных

model.py

class LicAppNew(models.Model):
  id_prof = models.AutoField(primary_key=True, serialize=True)
  fc_mo = models.CharField(max_length=8, choices=FC_MO_CHOICES)
  name = models.CharField(max_length=280, blank=True, null=True, choices=FC_NAME_CHOICES_2)
  date_b = models.DateField(blank=True, null=True, default='01.04.2022')
  idpr = models.IntegerField(blank=True, null=True, choices=IDPR_CHOICES)
  disp = models.CharField(max_length=10, blank=True, null=True)
  date_e = models.DateField(blank=True, null=True, default='01.01.2070')
  lic_num = models.CharField(max_length=255, blank=True, null=True)
  c_serv = models.IntegerField(blank=True, null=True, choices=C_SERV_CHOICES)
  deleted = models.BooleanField(default=False, blank=True, null=True)

class Meta:
    managed = True
    db_table = 'lic_app_new'
    #ordering = ['fc_mo']
    ordering = ['fc_mo','c_serv']


#def __str__(self):
   # return self.name()


def get_absolute_url(self):
    return f'/app/{self.id_prof}'

views.py

class LicAppNew_view(ListView):
  model = LicAppNew
  template_name = 'app/LicView_view.html'
  queryset = LicAppNew.objects.all()

class AppLicUpdateView(UpdateView):
    model = LicAppNew
    template_name = 'app/detail_app_view.html'
    form_class = LicAppNewForm
    success_url = '/app/'

LicView_view.html

detail_app_view.html

{% load static%}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="{% static 'ksg/css/ksg.css' %}">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.4/css/fontawesome.min.css">
</head>
<body>
<div class="features">
<form method="post" >
    <h1>Форма изменения записи</h1>
    {% csrf_token %}<br>
    <p>Номер МО</p>
    <p>{{ form.fc_mo }}</p>
    <p>Название МО</p>
    <p>{{ form.name }}</p>
    <p>Дата начала действия лицензии</p>
    <p>{{ form.date_b }}</p>
    <p>Федеральный профиль</p>
    <p>{{ form.idpr}}</p>
    <p>Номер диспанцеризации</p>
    <p>{{ form.disp}}</p>
    <p>Номер приказа</p>
    <p>{{ form.lic_num}}</p>
    <p>Профиль кода специальности</p>
    <p>{{ form.c_serv}}</p>
    <p>asad{{ form.get_c_serv_display() }}</p>
    <button class="btn btn-warning" type="submit">Изменить</button>
</form>
</div>
</body>
</html>

get_FOO_display - это "магический" метод экземпляра модели django, а не атрибут формы. Также, язык шаблонов Django вызывает функции, которые не имеют аргументов, но вы не вызываете их со скобками. Так что не {{form.get_c_serv_display()}}

Возможно, вам понадобится {{form.instance.get_c_serv_display}}, если форма является ModelForm. В противном случае вам придется явно передать экземпляр в контексте, если его там еще нет (Возможно, он там есть, как object по умолчанию в LicAppView, поэтому {{object.get_c_serv_display}} )

Вернуться на верх