問題タブ [django-serializer]

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.

0 投票する
5 に答える
10098 参照

python - 主キーから保存する Serializer の SerializerClass フィールド

私は Django-rest-framework を使用して API を開発し、それを Web アプリから使用しています。django.auth User モデルの Fk を持つ Physician Model があります。フォームから Physician Model に投稿したいのですが、シリアライザーから次のメッセージが返されます。

{"user":{"non_field_errors":["無効なデータです。辞書が必要ですが、Unicode を取得しました。"]}}

ユーザー オブジェクトの主キーを送信しています。外部キーを DRF に格納する正しい方法 (または 1 つの方法) はどれですか。シリアライザーで get_validation_exclusions をオーバーライドし、ビューセットで perform_create メソッドをオーバーライドしようとしました。

API と Web アプリは切り離されています。API は django で開発され、Web アプリは angularjs で開発されています。

私のモデル

シリアライザー:

*編集これは私のアカウントのシリアライザーで、この実装に基づいており、@Kevin Brown の提案があります

ビューセット

このオブジェクトをシリアライズしようとすると、エラーが発生します。

したがって、要素から任意のユーザーを投稿できます<select>。しかし、解決策を確認できません。私が欠けているものはありますか?

エラースタックトレース

編集**ビューセットの作成関数をオーバーライドし、オブジェクトをリクエストに含めることを選択したため、検証できますが、シリアライザーは Account モデルの新しいオブジェクトを挿入しようとします。どうすればこの動作を防ぐことができますか? PhysicianSerializer クラスのシリアライザーを read_only に設定しようとしましたが、django はモデルを null の user_id で保存しようとしました。関連オブジェクトを挿入せずにモデルを保存するにはどうすればよいですか?

0 投票する
1 に答える
47 参照

json - Djangoはカスタムjsonを返し、対処する必要がある値を追加します

私はjsonの結果を取得し、そのimages部分は次のようなIDと一致しません:

しかし、実際には、id=11 は画像と一致しA_123.jpg、id=12 は画像と一致する必要があります。B_123.jpg

機能的に何かをする必要があるため、imagesそれらはうまく一致しません。

どうすれば正しい順序で一致させることができますか?

これが私のコードです:

ビュー.py

serializes.py

0 投票する
1 に答える
23 参照

python - django serialize カスタム表示形式を作成

これは私のコードです:

結果は次のとおりです。

しかし、私が欲しいもの:

どうすればこれを行うことができますか、助けてください

0 投票する
1 に答える
465 参照

django - djangoで外部キーから外部キーにアクセスする方法

そのため、ユーザー モデル (django が提供するデフォルトのユーザー モデル)、フィード モデル、およびコメント モデルがあります。フィードとコメントは両方とも、外部キー関係を使用してユーザーを参照します。通知をプッシュするために、コメントされたフィードのユーザーを見つける必要がありますが、遅延ロードが原因でできません。私は prefetch_realtions を試しましたが、これはユーザー モデル内のすべてのユーザーを取得するだけです。ジャンゴで外部キーの外部キーにアクセスする方法はありますか? コードは次のとおりです-(models.py)-

そして、私のシリアライザークラスは次のようになります-

私が使用しようとしている prefetch_related クエリは次のとおりです-

私のトレースバックは次のとおりです-

ありがとうございました!

0 投票する
3 に答える
15895 参照

django - Django REST フレームワークで ModelSerializer が非常に遅い

私は自分の API に Django REST フレームワークを使用しています。昨日、それが大規模なデータに対してどのように機能するかを確認したかったのです。リクエストのプロファイリング方法に関するこのチュートリアル(Tom Christie 著) を見つけたところ、10,000 人のユーザーの場合、リクエストに驚くほど 2:20 分かかっていることがわかりました。

ほとんどの時間はオブジェクトのシリアル化 (約 65%) に費やされていたので、高速化するにはどうすればよいでしょうか?

私のユーザーモデルは実際にはデフォルトのdjangoモデルを拡張しているため、ネストされたモデルも取得していないため、.values()の使用は機能しません(はるかに高速ですが)。

どんな助けでも大歓迎です:)

編集

クエリセットを取得するときに .select_related() を既に使用しており、時間は短縮されましたが、数秒しか短縮されませんでした。合計クエリ数は 10 であるため、データベース アクセスに問題はありません。

また、このリクエストで不要なフィールドを避けるために、.defer() を使用しています。これもわずかな改善をもたらしましたが、十分ではありませんでした。

編集#2

Models

Serializers

Views

0 投票する
2 に答える
3618 参照

django-models - Django Admin で Editable=False フィールドへの編集を許可する

DRF はeditable=Falseフィールドの を使用して、シリアライザーを読み取り専用にデフォルト設定します。これは私が利用する非常に便利で安全なデフォルトです (つまり、シリアライザーを読み取り専用に設定することを忘れません)。設定したらeditable=False、Django管理者にそれらのフィールドの1つを編集できるようにする方法はありますか?

おそらく管理者はスーパーユーザーであり、フィールドの値を変更できるようにしたいのですが、安全のためにデフォルトのSerializerロジックを読み取り専用にしたいと考えています。

アップデート

オブジェクトを作成するときに、実際には「設定」ほどフィールドを編集できる必要はありません。