2011-05-19 57 views
2

我正在嘗試使用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對象的那個特性?

回答

4

您可以使用正常的get_FOO_display()方法 - 在這種情況下{{ petition.get_status_display }}

+0

賓果!非常感謝。 – gravelpot 2011-05-19 15:37:24

+0

您可以在文檔中閱讀更多信息:https://docs.djangoproject.com/en/1.8/ref/models/instances/#django.db.models.Model.get_FOO_display – 2015-05-14 14:52:13

相關問題