display text value of a positiveintegerfield

16 views
Skip to first unread message

6233114 6233114

unread,
Oct 8, 2014, 10:58:35 PM10/8/14
to django...@googlegroups.com
I am a newbie. I have searched the django docs for this answer, but I failed to find a reference, so here is my question.

I have a select list as part of a form stored in my models.py file as a positiveintegerfield, as shown below:
    
class AchievementDetails(models.Model, FillableModelWithLanguageVersion):
    SELECT_ACHIEVEMENT_TYPE = 0
    ACADEMIC_ACHIEVEMENT = 1
    COMMERCIAL_ACHIEVEMENT = 2
    PERSONAL_ACHIEVEMENT = 3
    PROFESSIONAL_ACHIEVEMENT = 4
    SPORTING_ACHIEVEMENT = 5
    OTHER_ACHIEVEMENT_TYPE = 6

    ACHIEVEMENT_TYPES = (
        (SELECT_ACHIEVEMENT_TYPE, _('Select Type')),
        (ACADEMIC_ACHIEVEMENT, _('Academic Achievement')),
        (COMMERCIAL_ACHIEVEMENT, _('Commercial Achievement')),
        (PERSONAL_ACHIEVEMENT, _('Personal Achievement')),
        (PROFESSIONAL_ACHIEVEMENT, _('Professional Achievement')),
        (SPORTING_ACHIEVEMENT, _('Sporting Achievement')),
        (OTHER_ACHIEVEMENT_TYPE, _('Other Achievement Type'))
    )

    ....
    achievement_type = models.PositiveIntegerField(choices=ACHIEVEMENT_TYPES, default=SELECT_ACHIEVEMENT_TYPE, validators=[MinValueValidator(1)])
    ....

In one of my templates I would like to display the text value of the achievement_type, but I can only get the number value of the users saved selection to be displayed.

Here is my views code, that returns only the numerical value of the users saved selection:

def achievement_details(request):
    ....
    for ad in achievement_details:
             ad.achievement_type_as_text = ad.achievement_type 
    ....

How do I display the text value of the saved select list value?

For example if the user has saved 2 as the achievement_type, how do I display Academic Achievement and not the number 2.

I have tried the following line of code, but this only returns (2, )

ad.achievement_type_as_text = AchievementDetails.ACHIEVEMENT_TYPES[ad.achievement_type]




Mike Dewhirst

unread,
Oct 8, 2014, 11:24:58 PM10/8/14
to django...@googlegroups.com
On 9/10/2014 1:58 PM, 6233114 6233114 wrote:
>
> *How do I display the text value of the saved select list value?*
>
> For example if the user has saved 2 as the achievement_type, how do I
> display *Academic Achievement* and not the number 2.

Easy ...

https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_display


>
> I have tried the following line of code, but this only returns *(2, )*
> *
> *
> *
> |
> ad.achievement_type_as_text =
> AchievementDetails.ACHIEVEMENT_TYPES[ad.achievement_type]
> |
>
> *

6233114 6233114

unread,
Oct 9, 2014, 12:13:02 AM10/9/14
to django...@googlegroups.com
Wow so easy (when you know where to look).

Thank you! 
Reply all
Reply to author
Forward
0 new messages