我正在嘗試使用Carl Meyer的django-model-utils程序包的StatusModel feature來創建一個具有狀態字段的模型。這是一個非常好的設計,您可以從StatusModel
中繼承您的模型,並將Choices
對象傳遞到模型上名爲STATUS的字段,該字段會自動在數據庫表示上創建'status'和'status_changed'字段。django-model-utils StatusModel可以提供人類可讀的狀態選項嗎?
我想我的狀態字段有一個單獨的人類可讀值比它的數據庫表示,documentation for the Choices
class說,它可以傳遞一個二元組,其中第一個值是選擇的數據庫表示,並且第二個是人類可讀的價值。但是當我使用上述Choices
對象嘗試使用StatusModel執行此操作時,我仍然在模板中使用狀態字段時獲取數據庫表示。
這裏是我的模型類的摘錄:
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
對象的那個特性?
賓果!非常感謝。 – gravelpot 2011-05-19 15:37:24
您可以在文檔中閱讀更多信息:https://docs.djangoproject.com/en/1.8/ref/models/instances/#django.db.models.Model.get_FOO_display – 2015-05-14 14:52:13