как вернуть только значение enum, а не kv pair в flask-sqlalchemy - PullRequest
0 голосов
/ 05 мая 2019

Я использую flask-sqlalchemy Разработка API, и я не знаю, как вернуть только значение данных типа Enum

Я решилизмените столбец db 'status' с String на Enum, но без изменения кода внешнего интерфейса, поэтому мне нужно только возвращать значение перечисляемого столбца.Я уже пробовал Message.status.value, но это не работает (AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Message.status has an attribute 'value')

Модель сообщения:

class Message(SurrogatePK, Model):
    __tablename__ = 'message'
    title = Column(db.String(30))
    url = Column(db.String(180))
    body = Column(db.String(300))
    category = Column(db.String(20))
    status = Column(db.Enum(MessageStatusEnum))

Класс перечисления:

@unique
class MessageStatusEnum(Enum):
    WORKING = "working on it, please wait..."
    COMPLETE = "complete sending message"

представление:


@blueprint.route('', methods=['GET'])
def get_msg_list():
…
    messages = UserMessage.query.join(Message).filter(…).with_entities(

    Message.id, Message.title, … Message.status

    ).paginate(page=page_index, per_page=page_size, error_out=False)

    data = {'pages': messages.pages, 'items': messages.items}
    return request_handler(SUCCESS, data=data)

1 Ответ

0 голосов
/ 09 мая 2019

Я решил этот вопрос и выложу сюда для справки

 msg_items = []
    for i in messages.items:
        element = {j.name: getattr(i, j.name) for j in [Message.status, Message.categ...., Message.body]}
        element['status'] = element['status'].value
        msg_items.append(element)
    data = {'pages': messages.pages, 'items': msg_items}
    return auth_handler(SYS_STATUS.SUCCESS, data=data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...