я сделал шаблон, чтобы показать все поля и значение из модели, это выглядит следующим образом:Джанго DetailView Шаблон шоу get_FIELDNAME_display() значения всех полей
## detail_template.html ##
<html>
<body>
{% for name, value in object.get_fields %}
<p>
<label>{% trans name %}:</label>
<span>{{ value|default:"Not available" }}</span>
</p>
{% endfor %}
</body>
<html>
В классе вы можете увидеть поле и функции объявлены:
## models.py ##
Class Object:
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
name = models.CharField(verbose_name=u"Full name", max_length=200, blank=True, null=True)
sex = models.CharField(verbose_name=u"Sex", max_length=1, choices=GENDER_CHOICES)
birthdate = models.DateField(verbose_name=u"Birth date", help_text="Format: DD/MM/AAAA", blank=True, null=True)
status = models.IntegerField(verbose_name=u"Status", db_index=True, default=1)
#...tons of other fields...
def get_status_display(self):
if self.status == 1:
return "Active"
else if self.status == 0:
return "Inactive"
else:
return "Dead"
def get_birthdate_display(self):
return self.birthdate.strftime("%d/%m/%Y")
def get_fields(self):
return [(field.verbose_name, self._get_FIELD_display(field)) for field in self.__class__._meta.fields]
* Что уже показывает это:
Полное имя: Не доступно (потому что я оставил это поле пустым)
Пол: Мужской (вместо М)Дата рождения: 10 апреля 2012 (НЕ в формате возвращенного get_birthdate_display)
Статус: 3 (не возвращаемая строка в get_status_display)
* То, что я хочу, чтобы отобразить это:
Полное имя: Нет в наличии (потому что я оставил это поле пустым)
Пол: Мужской (вместо M) дата
рождения: 20/10/1952 (с форматом в get_birthdate_display)
Статус: Dead (строка, возвращенная в get_status_display)
Так что я хочу, чтобы получить get_FIELDNAME_display, когда есть один, не делая вручную что-то вроде:
<p>
<label>{% trans 'Full name' %}:</label>
<span>{{ object.name|default:"Not available" }}</span>
</p>
<p>
<label>{% trans 'Sex' %}:</label>
<span>{{ object.get_sex_display|default:"Not available" }}</span>
</p>
<p>
<label>{% trans 'Birth Date' %}:</label>
<span>{{ object.get_birthdate_display|default:"Not available" }}</span>
</p>
<p>
<label>{% trans 'Status' %}:</label>
<span>{{ object.get_status_display|default:"Not available" }}</span>
</p>
Я признателен за любую помощь! Tks
Добавлено '()' после 'GetAttr (само "get_% s_display" имя%)'. Думайте, что вам нужны эти, но я не проверял это. – dgel