問題タブ [marshmallow]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 複数の子を持つ子を持つ SQLAlchemy オブジェクトをシリアル化する
marshmallowでシリアライズしている SLQALchemy オブジェクトがあります。
オブジェクトには N 個のいいね! と N 個のコメントがあります。次のようになります。
シリアライザーは次のようになります。
私は次のようにビューでこれを実行しようとします:
そして、これをJSONに変換します:
それを実行しようとすると、エラーが発生しますlist indices must be integers, not str
。に由来しmarshmallow/serializer.py
ます。そこにいくつかのことを記録すると、マシュマロがtext
のリストのプロパティにアクセスしようとしているように見えます<Comment>
。それぞれに<Comment>
個別にアクセスしてから、text
プロパティにアクセスする必要があります。
シリアライザーに何か不足していますか? many=True
ParentSerializer で引数を送信すると、マシュマロに のリストを反復処理する必要があることがわかります<Parent>
。<Comment>
マシュマロに多くのまたはを期待する必要があることを伝える方法はあり<Like>
ますか?
python - Marshmallow で MongoDB ObjectId をシリアル化するにはどうすればよいですか?
マシュマロとモンゴエンジンを使用して、Flask の上に API を構築しています。呼び出しを行い、ID をシリアル化する必要がある場合、次のエラーが表示されます。
ObjectId の処理方法をオーバーライドするために、他のライブラリでいくつかの方法を見ました。私はまだマシュマロでそれを理解していません.誰もそれを行う方法を知っていますか?
私のモデルは次のとおりです。
私のシリアライザ:
そしてビュー:
python - ModelSerializer(model) と ModelSerializer().dump(model) のマシュマロの違い
オブジェクトを JSON にシリアル化するためにマシュマロを使用していますが、出力が次のようになることに気付きModelSerializer(model).data
ましたModelSerializer().dump(model).data
それらの間に違いはありますか?
python - マシュマロからのデータで行を更新 (SQLAlchemy)
Flask、Flask-SQLAlchemy、Flask-Marshmallow + marshmallow-sqlalchemy を使用して、REST API PUT メソッドを実装しようとしています。SQLA とマシュマロを使用して更新を実装するチュートリアルは見つかりませんでした。
コードは次のとおりです。
python - ロード時に「None」を強制し、ダンプ時に「None」をスキップする
私はマシュマロ2.0.0rc2 を使用して、HTTP 要求の入力データを検証し、HTTP 応答で SQLAlchemy モデルを JSON にロードしています。そして、私は2つの問題に遭遇しました:
まず、HTTP PUT 要求で JSON からデータをロードしているときに、欠落しているすべてのフィールドを None として設定し、SQLAlchemy のデータを正しく上書きしたいと考えています。現在、次のコードを使用しています。
動作しますが、クラスmarshmallow.Field
にアタッチされたインスタンスをいじっているので、バグがあると思います。Schema
そして、Schema
インスタンスを破棄した後、パッチを適用したすべてのフィールドは、デフォルトのフィールドではなく、新しい行方不明のままになります。
次に、SQLAlchemy から JSON にデータをダンプするときに、不足しているすべてのフィールドが None として解決され、JSON にデータが取り込まれ{"key": null, }
ます。post_dump
これは望ましくない動作であり、トリガーでそれらをクリーニングしています。
前と同じように動作していますが、BaseSchema
継承されたすべてのクラスにこのロジックを渡すいくつかのクラス ウィッチの作成が含まれます。
しばらくドキュメントを検索しましたが、この動作を入れ替える正しい方法が見つかりませんでした。つまり、ダンプ時にフィールドをスキップしNone
、ロード時にフィールドに入力します。私は何か不足していますか、それともマシュマロはそのような機能を提供していませんか?
python - トップレベルのマシュマロ スキーマ検証
Marshmallow#validationから、スキーマの特定のフィールドにバリデーターを登録できることがわかりました。バリデータが失敗した場合、次のエラーが発生します:
バリデーターに失敗したフィールドのエラー情報が含まれます。
私の質問: (個々のフィールド レベルではなく) スキーマ レベルで検証し、上記の方法でエラーを返すことは可能ですか?
MySchema().load()
恣意的な例として、 n個の異なるキーを試行したことを検証したいとします。現在@pre_load
、入力の構造とデータの形式が正しくないかどうかをチェックするメソッドがありますが、raise ValidationError('message')
フィールド検証のように result.errors として返したいと思います。私のオプションは何ですか?
python - Pythonフラスコ/マシュマロでjson属性の順序を変更する
私はフラスコ、sqlalchemy、およびマシュマロを使用して単純な REST API を作成しています。デフォルトでは、モデルは常にアルファベット順の属性を持つ json にシリアル化されます。
マシュマロでjson属性の順番を指定する方法はありますか?
例えば:
戻り値
しかし、私は期待します
json は順序付けられていないセットであり、クライアントにとっては問題ではないことを認識しています。ただし、開発中およびきれいな印刷中のデバッグ目的のためのものです。したがって、フレームワークで属性の順序を定義できると期待しています。
python - エラーを出さないマシュマロ
Marshmallow を使用して次のようなスキーマを作成した場合:
そして、私は次のようなことをします:
エラーが発生すると思いますが、次のようになります。
これまたは他のものがエラーとして表示されないのはなぜですか?