6

正在使用python 3.4.我创建了一个enum类型,如下所示:

import enum
class EnumGender(enum.Enum):
    blank = ' '
    female = 'Female'
    male = 'Male'
    other = 'Other'

我的问题是如何将其分配给 flask-restplus 字段,因为我能看到的唯一示例是:

fields.String(description='The object type', enum=['A', 'B'])

4

4 回答 4

10

您可以为其分配成员名称:

fields.String(description='The object type', enum=EnumGender._member_names_)
于 2018-02-16T16:02:58.633 回答
4

我选择了这种方法:

fields.String(attribute=lambda x: str(EnumGender(x.FieldContainingEnum).name))

(来源:如何在python中取回枚举元素的名称?

于 2019-07-03T15:02:43.777 回答
1

在我的情况下有这样的枚举:

from enum import Enum


class SubscriptionEvent(Enum):
    on_success = "ON_SUCCESS"
    on_error = "ON_ERROR"

我需要这样的元帅定义:

subscription_action_serializer = api.model('SubscriptionAction', {
    'event': fields.String(enum=[x.value for x in SubscriptionEvent], attribute='event.value'),
})

我只需要接受并呈现为有效的枚举值"ON_SUCCESS", "ON_SUCCESS"

于 2020-05-25T13:17:32.457 回答
0

另一种可能性,Python 3.7.3(大约 2019 年 11 月):

fields.String(description="The object type",
              enum=[x.name for x in EnumGender])
于 2019-11-09T02:27:29.030 回答