有没有办法使用SQLAthanor序列化SQLAlchemy模型,只包括特定字段?文档没有提到它,所以我想出的唯一方法是手动过滤结果 .
所以,这行与sqlathanor
return jsonify([user.to_dict() for user in users for k, v in user.to_dict().items()
if k in ['username', 'name', 'surname', 'email']])
相当于使用Marshmallow的这个
return jsonify(SchemaUser(only=('username', 'name', 'surname', 'email')).dump(users, many=True))
再一次,SQLAthanor中是否有内置方法来执行此操作?
1 回答
调整我的相关答案Github issue:
在不调整实例配置的情况下更改序列化字段列表的唯一方法是手动调整
to_<FORMAT>()
的结果 . 您的代码片段是一种方法,尽管对于JSON和YAML,您还可以提供自定义serialize_function
,它接受dict
,处理它,并根据需要序列化为JSON或YAML:这两种方法实际上是相同的,但
serialize_function
方法为您提供了更灵活的更复杂的序列化输出调整和(我认为)更容易阅读/维护代码(尽管如果你所做的都是调整包含的字段,你的代码片段已经是很可读) .您也可以概括
serialize_function
. 因此,如果要为其提供要包含的字段列表,只需将它们作为关键字参数包含在to_json()
中: