Flask-Restless中的自定义参数?
Flask-Restless 只接受在 SQLAlchemy 模型中定义的列作为参数。我想把像 blue green
这样的内容存储到两个列中,分别是 primary_color
和 secondary_color
。
目前,我是把数据作为 primary_color
(这是一个允许的字段)发送的,然后使用一个 postprocessor
来把它分割成 primary_color
和 secondary_color
。
有没有可能做得更简单、更符合逻辑,比如发送一个 colors
字段,然后再进行处理呢?
1 个回答
3
请求预处理器是在验证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混合属性,这个属性可以在设置时将颜色转换为主色和次色。