python - 如何使用 SqlAlchemy-Marshmallow 更改字段名称?

标签 python sqlalchemy marshmallow

我正在使用 SQLAlchemy - Marshmallow 进行架构创建,它大致如下所示:

class someModel(db.Model):
  y_x = db.Column(db.BigInteger, primary_key = True)

class someSchema(ma.ModelSchema):
  class Meta:
    model = someModel

我遇到的问题是我想要使用的 JSON 对象具有属性 x, {"x": 1},而不是 y_x。有没有办法让模式识别这一点?我知道在 Marshmallow 中你可以做 y = fields.Integer(data_key="x") 但我不确定这是否适用于棉花糖 flask ,以及是否可以在 model = someModel 之后添加它。

最佳答案

我遇到了这个确切的问题,并尝试通过向我的架构定义添加手动字段覆盖来修复它。这会在模型自动生成的字段与我手动定义的字段之间产生冲突。事实证明,如果您手动覆盖字段,则需要通过将它们显式标记为从 Meta 类中排除来将它们排除在推理之外。像这样的事情最终对我有用:

class FooSchema(ma.ModelSchema):
    id = fields.Integer(attribute="foo_id")
    class Meta:
       model = Foo
       exclude = ["foo_id"]

希望这可以节省人们挖掘 Marshmallow-SQLAlchemy 源代码的时间。

关于python - 如何使用 SqlAlchemy-Marshmallow 更改字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55247922/

相关文章:

python - 如何组织GAE Modules app结构和代码?

python - 向 suds 中的 WSDL 中缺少的服务添加附加元素

python - sqlalchemy,用DSN指定数据库名

python - 反序列化多对多 PUT 操作的 id 列表

python - 强制加载 `None` 并在转储时跳过 `None`

python - 从模型中获取 JSONAPI 模式

python - 从两个 Numpy 数组高效生成柯西矩阵

python /MySQL : Escaping strings used as parameters in raw database queries

python - 在查询 [INFORMATION_SCHEMA].[TABLES] 时,SQLAlchemy 在插入期间挂起

postgresql - SQLAlchemy 核心 : Creating a last_value window function for postgresql