Как вызвать 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}}
)