2017-01-03 4 views
3

シリアライザが何をしているのか理解している間に、私はジャンゴレストフレームワークを学んでいます。シリアライザとモデルserialzerクラスの場合あなたのどちらかが私に具体的な現実世界の使用例を教えてください。Django Rest Framework - シリアライザクラスとモデルシリアライザクラスを使用する具体的な例

はい、私はDRFのウェブサイト上のチュートリアルを数回行っていると私はまだあいまい

+0

私の質問を変えたいと思いますが、モデルシリアライザを使用すべきではない現実世界の例がありますか?シリアライザクラスは?私たちのデータベースから発信されていないデータをシリアル化するときは? –

答えて

2

を経験していますがあり優れた例がDRF tutorial上にあり、それが答えでカバーするにはあまりにも多くを取るだろうが、私は希望いくつかの点を作る。

まず、DRFのドキュメントは説明する:

当社SnippetSerializerクラスには、スニペットモデルに記載された情報の多くを複製しています。私たちのコードをもっと簡潔にすることができればいいと思います。

DjangoがFormクラスとModelFormクラスの両方を提供するのと同じように、RESTフレームワークにはSerializerクラスとModelSerializerクラスの両方が含まれています。

スニペットモデルは、この例で使用されるモデルの名前です。したがって、ドキュメントでは、モデルから同じフィールドを再度入力してSerializerに入力するのではなく、ModelFormと同じようにをショートカットとして使用することができます。Formです。

しかし、あなたのコメントで指摘したように、これは本質的に「ok、なぜシノニムシリアライザクラスですか?」という質問を残します。

モデルを持ち、関連するデータ(通常はJSONであるが、これに限定されない)をシリアライズ/デシリアライズする必要がある大部分のケースでは、ModelSerializerが行く方法です。追加のフィールド、関連するシリアライザ、または任意のロジックが必要な場合でも、ModelSerializerを簡単に微調整することができます。個人的には、ModelSerializerがモデルに関連するデータには適していないという私のプロジェクトで私が出会ったことはありません。

ただし、モデルに準拠していないデータを処理する必要がある場合があります。そのようなデータはDRFビューにPOSTされ、Serializerがそれらを処理します。そのようなケースは、例えば、メールメッセージを送信したり、セロリタスクをセットアップしたり、セッションにデータを追加したり、モデルをまったく含まない他の多くのものにすることができます。

+0

これは私が言っていることを参照してください、これは実際には非常に貴重です。ありがとうございます –

+0

@amazingCarrotSoup私はこれが助けてうれしいです。 – Wtower

関連する問題