Flask-Restless 只接受在 SQLAlchemy 模型中定义的列的参数。我想采取类似的东西blue green
并将其存储在两列primary_color
和secondary_color
.
现在,我将数据发布为primary_color
(允许的字段)并使用 apostprocessor
将其拆分为primary_color
and secondary_color
。
是否可以做一些更干净、更语义化的事情,比如 POST 一个colors
字段,然后再处理它?
Flask-Restless 只接受在 SQLAlchemy 模型中定义的列的参数。我想采取类似的东西blue green
并将其存储在两列primary_color
和secondary_color
.
现在,我将数据发布为primary_color
(允许的字段)并使用 apostprocessor
将其拆分为primary_color
and secondary_color
。
是否可以做一些更干净、更语义化的事情,比如 POST 一个colors
字段,然后再处理它?
请求预处理器在针对模型验证 POST 数据之前运行。
POST
在 API 上为解析任何键的请求设置预处理器, 就地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 抱怨密钥在那里。
后处理器永远不可能在这里工作。这些仅在已创建新实例后才被调用以更改返回的响应。
或者,在您的模型上创建一个名为SQLAlchemy 的混合属性colors
,将颜色转换为 setter 中的主要颜色和次要颜色。