棉花糖结果定制



我有这个模型的sqlalchemy模型,其中包含jsonb字段和棉花糖模式:

class Settings(db.Model):
id = db.Column(UUID, primary_key=True,
server_default=text("uuid_generate_v4()"))
settings = db.Column(JSONB)
class SettingsSchema(ma.ModelSchema):
class Meta:
model = Settings

我正在用 json 序列化它,如下所示:

settings = Settings(settings={'qwerty': 'test'})
settings_schema = SettingsSchema(many=False, exclude=('id', ))
body = settings_schema.dump(settings).data

模型的 JSON 视图如下所示:

{
"settings": {
"qwerty": "test"
}
}

当我将此架构用作嵌套时,我得到的结果如下

{
"id": 123456,
"some_field": "some_field_value",
"other_field": "other_field_value",
"settings": {
"settings": {
"qwerty": "test"
}
}
}

而这个"设置.设置"看起来很丑陋。

有没有办法对棉花糖说我只需要值作为转储结果,我的意思是

{
"qwerty": "test"
}

可能我需要对元类做一些事情,但我不知道我该怎么办。

我知道了。我应该在我的架构中使用@post_dump:

class SettingsSchema(ma.ModelSchema):
class Meta:
model = WorkspaceSettings
@post_dump(pass_many=True)
def unwrap_settings(self, data, many):
if many:
return [item['settings'] or {} for item in data]
else:
return data['settings'] or {}

相关内容

  • 没有找到相关文章

最新更新