2014-03-18 22 views
0

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

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

是否有可能做一些更干净和更有意义的语义,比如POST a colors字段,然后再处理它?

回答

3

Request preprocessors正在运行之前根据模型验证POST数据。

设置该解析任何colorsPOST请求API的预处理器,改变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键,以防止瓶,不宁从抱怨那里的关键。

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

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

+0

很好的解释。谢谢! –