2
ネストされたアイテムのフィールドを1つだけ取ることで、ネストされたオブジェクトのリストをスカラー値としてシリアル化しようとしています。 [{key: value}, ...]
の代わりに[value1, value2, ...]
を受け取りたいです。python-marshmallow:公開されたキーが1つのみのネストされたスキーマをデシリアライズ
コード:上記のスキーマを考える
from marshmallow import *
class MySchema(Schema):
key = fields.String(required=True)
class ParentSchema(Schema):
items = fields.Nested(MySchema, only='key', many=True)
は、私はいくつかのデータをシリアル化したい:
>>> data = {'items': [{'key': 1}, {'key': 2}, {'key': 3}]}
>>> result, errors = ParentSchema().dump(data)
>>> result
{'items': ['1', '2', '3']}
この予想通り、私のスカラー値のリストを与えて動作します。上記のモデルを使用してデータをデシリアライズしようとしたときただし、データが突然無効です:
>>> data, errors = ParentSchema().load(result)
>>> data
{'items': [{}, {}, {}]}
>>> errors
{'items': {0: {}, '_schema': ['Invalid input type.', 'Invalid input type.', 'Invalid input type.'], 1: {}, 2: {}}}
私が行方不明です任意の構成オプションはありますかこれは単に可能ではないでしょうか?同じ問題を越えつまずく人のため
私はあなたの質問を理解して完全にわからないんだけど、あなたはそれはあなたがこのテストについて尋ねているサウンドを確認することができます。例: https://github.com/marshmallow-code/marshmallow/blob/433ba6c03306760b1c5d3bed12436525f401dd11/tests/test_schema.py#L364 (test_default_many_symmetry) これは間違いありませんか? – galuszkak
リンクしたテストでは、各ユーザーを '{" name ":" name1 "}'にシリアライズします。私がしたいのは、各ユーザを '' name1 ''に直列化することです。特に' 'many = True'ユースケースの場合、' '[Arlur King」、「Sir Lancelot」] {'name': 'Arthur King'}、{'name': 'Lancelot Sir}}' – Birne94