Flask-Restless只接受在SQLAlchemy模型中定义的列的参数。我想采用类似blue green
的内容,并将其存储在两列primary_color
和secondary_color
中。
目前,我正在将数据发布为primary_color
(允许的字段)并使用postprocessor
将其拆分为primary_color
和secondary_color
。
是否可以做一些更干净,更具语义性的事情,例如POST colors
字段,然后再处理它?</ p>
答案 0 :(得分:3)
在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,将颜色转换为设置器中的主要和次要颜色。