model_utils.Choices を使用して CharField を持つモデルがあります。
from model_utils import Choices
class UserTestStatistics(models.Model):
TEST_STATUSES = Choices(
('NR', 'not_readed'),('NP', 'not_passed'),
('FL', 'failed'), ('PD', 'passed'),
)
status = models.CharField(choices=TEST_STATUSES, max_length=2)
テンプレートでは、ステータス フィールドの値に応じてカスタム css クラスを追加したいと考えています。私はこれを試しました:
{% if lecture.status == 'NP' %}
label-warning
{% endif %}
これはうまくいきませんでした。それから私はこれを試しました:
context['statuses'] = UserTestStatistics.TEST_STATUSES
{% elif lecture.status == statuses.not_passed %}
label-warning
{% endif %}
そしてそれも失敗しました。その理由は次のとおりです。
>>> s = UserTestStatistics.objects.get(lecture=l)
>>> type(s.status)
<type 'unicode'>
>>> type(UserTestStatistics.TEST_STATUSES.passed)
<type 'str'>
手っ取り早い解決策は、両方をアンコードに変換してから比較するカスタム テンプレート タグを追加することですが、私にとってはどこか間違っているように見えます。
誰かもっときれいなことをアドバイスできますか?