Flask-Restless只接受SQLAlchemy模型中定义的列参数。我想取blue green
然后把它存储在两列中primary_color
和secondary_color
。
现在,我将数据发布为primary_color
(允许的字段),并使用postprocessor
将其拆分为primary_color
和secondary_color
。
是否有可能做一些更干净,更语义,像POST一个colors
字段,然后处理它之后?
在根据模型验证POST数据之前运行请求预处理器。
在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属性,它在setter中将颜色转换为主色和辅助色。