2016-10-18 5 views
1

Я использую django_enumfieldКак отобразить текстовое значение поля enum?

Моя модель выглядит следующим образом:

class GenderValues(enum.Enum): 
    NONE = 0 
    MALE = 1 
    FEMALE = 2 
    BOTH = 3 

class Gender(models.Model): 
    gender = enum.EnumField(GenderValues, default=GenderValues.NONE) 

    def __str__(self): 
     return self.gender 

Я выставил эту модель в админке следующим образом:

admin.site.register(Gender) 

Затем я могу пойти в админке и добавьте пол.

Проблема:

Гендерные появляется как число (например, 1, если я выбираю «мужской») вместо «мужского».

Примечание Я попытался добавить ярлык к GenderValues, как это, но это не имеет никакого значения:

labels = { 
    MALE: 'Male', 
} 

Вы знаете, как я могу отобразить «мужской» или «мужской» в админке вместо 1?

спасибо.

ответ

1

использование _display()

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

или

Использование list_display (в админ)

class GenderAdmin(admin.ModelAdmin): 

    list_display=['gender'] 

admin.site.register(Gender, GenderAdmin) 
+0

Потрясающе, спасибо. Вы не возражаете, я спросил, как вы это знаете? Мне очень сложно разобраться в этом материале, не заучивая документацию django ... –

+1

Вы, вероятно, искали EnumField или что-то в этом роде. Использование опции 'choice' проще https://docs.djangoproject.com/en/1.10/ref/models/fields/#choices – FeedTheWeb

+0

Спасибо. Я действительно искал EnumField ... Теперь я вижу решение в разделе выбора. Ура! –

Смежные вопросы