Djangoのモデルでchoicesを使用した際に値を取得する方法

Django

get_(field名)_display()で取得が出来る

Djangoを使用しているとモデルでchoicesを使用することも多々あると思うのですが、viewやtemplate側で値だけ取りたい場合にchoicesの中身はtupleなので、いつもどう表示するのか忘れてしまいがちなので、メモっておきたいと思います。

STATUS_DEFAULT = 0
STATUS_DONE = 9
STATUS_CHOICES = (
    (STATUS_DEFAULT, 'デフォルト'),
    (STATUS_DONE, '完了')
)

class Test(models.Model):
    status = models.SmallIntegerField(default=TYPE_OTHER, choices=TYPE_CHOICES)

    def __str__(self):
        return self.get_status_display()

もちろん、template側でも使えます。

Testオブジェクトをview側で取得した後に、contextに渡してあげて、

{{ test.get_status_display }}

最後に

結構使う機会が多いのに、忘れがちということで、残しておきたいと思います。

コメントを残す