Я пытаюсь использовать функцию StatusModel потрясающего пакета django-model-utils Карла Мейера для создания модели с полем состояния.Это очень хороший дизайн, в котором вы создаете подкласс для своей модели из StatusModel
и передаете объект Choices
в поле модели с именем STATUS, которое автоматически создает поля 'status' и 'status_changed' в представлении базы данных.
Я бы хотел, чтобы у моего поля состояния было другое удобочитаемое значение, нежели его представление в базе данных, а в документации для Choices
класса говорится, что ему можно передать два кортежа, в которыхпервое значение - это представление базы данных выбора, а второе - удобочитаемое значение.Но когда я пытаюсь сделать это с моей StatusModel, используя вышеупомянутый объект Choices
, я все равно получаю представление базы данных, когда использую поле статуса в шаблоне.
Вот выдержка из моего класса модели:
from django.utils.translation import ugettext as _
from model_utils import Choices
from model_utils.models import StatusModel
STATUS_CHOICES = Choices(
('awaiting_approval', _('Awaiting approval')),
('returned_to_submitter', _('Returned to submitter')),
('approved', _('Approved')),
('denied', _('Denied')),
)
class Petition(StatusModel):
STATUS = STATUS_CHOICES
...
и вот мой шаблон:
<table>
<tr>
<th>Status</th>
</tr>
{% for petition in petitions %}
<tr>
<td>{{ petition.status }}</td>
<!-- expecting "Awaiting approval" but it displays "awaiting_approval" -->
</tr>
{% endfor %}
</table>
Как получить класс модели, чтобы он возвращал читабельный статус человека?Или StatusModel
не поддерживает эту функцию объекта Choices
?