使用嵌套模式更新对象的最佳方法

问题描述 投票:0回答:1

我有两个模型:ArticleModelTagModelMay-To-Many之间的关系。我将marshmallow用于[反序列化]。>

我想更新或创建ArticleModel实例,并希望从front-end以下数据获取

{
  'title': 'article',
  'tags': [1, 2, 4] // ids of TagModel instances
}

我同意了

schemas

class ArticlePutPostSchema(Schema):
    tags = fields.List(fields.String())

view

def post(self):
    json_data = request.get_json()
    data = ArticlePutPostSchema().load(data=json_data, partial=True)
    data["tags"] = list(
        TagModel.query.filter(TagModel.id.in_(data["tags"]))
    )
    article = ArticleModel(**data)
    db.session.add(article)
    db.session.commit()
    return jsonify(), 200

但是我认为这是不好的方法。

我也尝试应用Pluck字段

Pluck

我得到了Pluck(TagSchema, 'id', many=True)

这也是一种不好的方法。

如何解决?

我有两个模型:ArticleModel和TagModel,它们之间存在May-To-Many关系。我使用棉花糖进行[反序列化]。我想更新或创建ArticleModel实例,并且想从前面获得......

python flask serialization flask-sqlalchemy marshmallow
1个回答
0
投票

执行此操作的一种好方法是按照[{'id': 1, 'id': 2, 'id': 4}]的描述在ArticlePutPostSchema中定义嵌套模式。

© www.soinside.com 2019 - 2024. All rights reserved.