Flask-Restless中的自定义参数?

时间:2014-03-18 18:27:37

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

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

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

是否可以做一些更干净,更具语义性的事情,例如POST colors字段,然后再处理它?<​​/ p>

1 个答案:

答案 0 :(得分:3)

在针对模型验证POST数据之前,

Request preprocessors运行

在API上为POST请求设置预处理器,解析任何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抱怨密钥在那里。

后处理器永远不会在这里工作;只有在已经创建新实例之后,才会调用这些来改变返回的响应

或者,在名为colors的模型上创建SQLAlchemy hybrid attribute,将颜色转换为设置器中的主要和次要颜色。