0

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

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

是否可以做一些更干净、更语义化的事情,比如 POST 一个colors字段,然后再处理它?

4

1 回答 1

3

请求预处理器在针对模型验证 POST 数据之前运行。

POST在 API 上为解析任何键的请求设置预处理器, 就地colors更改字典: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 抱怨密钥在那里。

后处理器永远不可能在这里工作。这些仅在已创建新实例后才被调用以更改返回的响应。

或者,在您的模型上创建一个名为SQLAlchemy 的混合属性colors,将颜色转换为 setter 中的主要颜色和次要颜色。

于 2014-03-18T18:37:14.833 回答