是否可以动态修改封送响应模型(即:更改字段列表、添加掩码等)
例:
from flask_restplus import Resource, fields
model = api.model('Model', {
'name': fields.String,
'address': fields.String,
'date_updated': fields.DateTime(dt_format='rfc822'),
})
@api.route('/todo')
class Todo(Resource):
@api.marshal_with(model, envelope='resource')
def get(self, **kwargs):
return db_get_todo() # Some function that queries the db
这里,编组是用decorator静态声明的。如果我想从用户不是管理员时更新的示例日期屏蔽,或者根据用户偏好,我不能
我看到了这个例子:https://blog.fossasia.org/dynamically-marshaling-output-in-flask-restplus/ 这很有趣,但它使用了另一个静态模型,因此它不是真正的动态模型,并且意味着代码重复(当然我可以使用inherit,…)
我想要的是能够动态更改字段,或者从列表中添加一个掩码,该列表可以来自数据库,例如(用户首选项或权限)
我已经试着手动整理答案
wanted_field_list='name,address'
return marshal(db_get_todo(),model , mask=wanted_field_list), 200
如果我删除decorator@marshall_,它会工作得很好,但缺点是我没有招摇过市的医生了
{ 'name':'blabla',
'address':'xxx'}
如果我保留decorator,它仍然可以由不需要的字段使用空值呈现:
{ 'name':'blabla',
'address':'xxx',
'date_updated : null}
这不是预期的结果
我试图转移到flask_restx,但我的狂妄自大根本没有表现出来,我还有一些其他问题
欢迎任何帮助
我知道有点晚了,但不管怎么说,这里有人需要它:
您有几个选项来完成您需要的任务:
相关问题 更多 >
编程相关推荐