【问题标题】:how to return only the value of enum rather than kv pair in flask-sqlalchemy如何在flask-sqlalchemy中只返回枚举的值而不是kv对
【发布时间】:2019-05-09 17:00:36
【问题描述】:

我正在使用 flask-sqlalchemy api 开发,我不知道如何只返回 Enum 类型数据的值

我决定将 db 列“状态”从 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)

【问题讨论】:

    标签: python enums flask-sqlalchemy


    【解决方案1】:

    我解决了这个问题并在这里发布以供参考

     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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 2017-03-16
      相关资源
      最近更新 更多