Django: Access given field's choices tuple Django: Access given field's choices tuple python python

Django: Access given field's choices tuple


This is pretty much ok to import your choice mapping FILE_STATUS_CHOICES from models and use it to get Pending by P:

from my_app.models import FILE_STATUS_CHOICESprint dict(FILE_STATUS_CHOICES).get('P')

get_FIELD_display() method on your model is doing essentially the same thing:

def _get_FIELD_display(self, field):    value = getattr(self, field.attname)    return force_text(dict(field.flatchoices).get(value, value), strings_only=True) 

And, since there is a flatchoices field on the model field, you can use it with the help of _meta and get_field_by_name() method:

choices = f._meta.get_field_by_name('name')[0].flatchoicesprint dict(choices).get('P')

where f is your model instance.

Also see:


I recommend using Choice from django-model-utils: https://django-model-utils.readthedocs.io/en/latest/utilities.html#choices.

I use it in every my models if I need choice field. See examples, it has excellent options.