2016-10-18 66 views
1

我使用django_enumfield如何顯示枚舉字段的文本值?

我的模型看起來是這樣的:

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或其他東西。使用'選項'選項更簡單https://docs.djangoproject.com/en/1.10/ref/models/fields/#choices – FeedTheWeb

+0

謝謝。我的確在搜索EnumField ...我現在可以在選擇部分看到解決方案。乾杯! –