我试图使用carl meyer的awesomeStatusModel feature包的django-model-utils来创建一个具有status字段的模型。这是一个非常好的设计,您可以从StatusModel将模型子类化,并将Choices对象传递给模型上名为status的字段,该字段会自动在数据库表示形式上创建“status”和“status\u changed”字段。
我希望我的status字段有一个单独的人类可读值,而不是它的数据库表示,documentation for the Choices class表示可以传递一个两元组,其中第一个值是所选的数据库表示,第二个是人类可读值。但是,当我尝试使用上面的Choices对象对statusmodel执行此操作时,当我在模板中使用status字段时,仍然会得到数据库表示。
以下是我的模特课摘录:

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>

如何使model类返回可读状态?或者StatusModel不支持Choices对象的特性?

最佳答案

您可以使用normalget_FOO_display()方法-在这种情况下{{ petition.get_status_display }}

10-02 10:57