簡體   English   中英

django-model-utils StatusModel可以提供人類可讀的狀態選項嗎?

[英]Can django-model-utils StatusModel provide human readable status options?

我正在嘗試使用Carl Meyer的令人敬畏的django-model-utils包的StatusModel功能來創建具有狀態字段的模型。 這是一個非常好的設計,您可以從StatusModel模型並將Choices對象傳遞給名為STATUS的模型上的字段,該字段會自動在數據庫表示上創建“status”和“status_changed”字段。

我希望我的status字段有一個單獨的人類可讀值而不是數據庫表示, Choices文檔說它可以傳遞一個二元組,其中第一個值是選擇的數據庫表示形式,第二個是人類可讀的價值。 但是當我嘗試使用上面的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對象的該功能?

你可以使用普通的get_FOO_display()方法 - 在這種情況下{{ petition.get_status_display }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM