【问题标题】:Custom arguments in Flask-Restless?Flask-Restless 中的自定义参数?
【发布时间】:2014-04-24 15:22:28
【问题描述】:

Flask-Restless 只接受在 SQLAlchemy 模型中定义的列参数。我想获取类似blue green 的内容并将其存储在primary_colorsecondary_color 两列中。

现在,我将数据发布为primary_color(允许的字段)并使用postprocessor 将其拆分为primary_colorsecondary_color

是否可以做一些更简洁、更语义化的事情,比如发布一个colors 字段,然后再对其进行处理?

【问题讨论】:

    标签: python sqlalchemy flask flask-sqlalchemy flask-restless


    【解决方案1】:

    Request preprocessors针对模型验证 POST 数据之前运行。

    在 API 上为解析任何 colors 键的 POST 请求设置预处理器,就地更改 data 字典:

    def preprocess_colors(data):
        colors = data.pop('colors', None)
        if colors is not None:
            # set primary and secondary colors
            data['primary_color'] = get_primary_color(color)
            data['secondary_color'] = get_secondary_color(colors)
    

    您确实需要从字典中删除 colors 键,以防止 Flask-Restless 抱怨该键存在。

    后处理器不可能在这里工作;这些仅在新实例已经创建之后被调用以改变返回的响应。

    或者,在您的模型上创建一个名为 colorsSQLAlchemy hybrid attribute,它将颜色转换为 setter 中的主要颜色和次要颜色。

    【讨论】:

    • 很好的解释。谢谢!
    猜你喜欢
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2013-10-16
    • 2013-12-26
    • 2017-11-14
    • 2023-03-13
    • 2015-07-29
    相关资源
    最近更新 更多