python - Django: Display Choice Value

ID : 10166

viewed : 24

Tags : pythondjangodjango-modelsdjango-templatespython

Top 4 Answer for python - Django: Display Choice Value

vote vote

99

It looks like you were on the right track - get_FOO_display() is most certainly what you want:

In templates, you don't include () in the name of a method. Do the following:

{{ person.get_gender_display }} 
vote vote

82

For every field that has choices set, the object will have a get_FOO_display() method, where FOO is the name of the field. This method returns the “human-readable” value of the field.

In Views

person = Person.objects.filter(to_be_listed=True) context['gender'] = person.get_gender_display() 

In Template

{{ person.get_gender_display }} 

Documentation of get_FOO_display()

vote vote

78

Others have pointed out that a get_FOO_display method is what you need. I'm using this:

def get_type(self):     return [i[1] for i in Item._meta.get_field('type').choices if i[0] == self.type][0] 

which iterates over all of the choices that a particular item has until it finds the one that matches the items type

vote vote

70

Top 3 video Explaining python - Django: Display Choice Value

Related QUESTION?