DjangoのSerialierでfieldsを_all_指定するのではなく、exceptを使って取り除きたいとき

今回はDjango Rest Frameworkにおいてserializerを使うときにfieldsを_all_指定するのではなく、fieldの一部を取り除きたいときどのようにすれば良いのかについてご紹介いたします。



DjangoのSerialierでfieldsを_all_指定するのではなく、exceptを使って取り除きたいとき

Django Rest Frameworkにおいてserializerを使うときにMETAに対してmodelのすべてのfieldについて取得したいとき、

というやり方をすることがあると思います。

しかし上記だとfieldすべてを取得したり、TestModelの中から数個程度のfieldを指定するときはやりやすいのですが、例えばTestModelのfieldが20個くらいあり、そのうちの1個を除いた19個を対象としたいときなどに不便です。
書くことは可能ですが、ソースコードでfieldを羅列するのが大変ですし、何があって何がないのかすぐには分かりません。

そんな時は、excludeを指定してやりましょう。

こうすることによって例えば上記の例では、TestModelのfieldが20個くらいあったときに「created_at」と「updated_at」を取り除いた18個のfieldを返すことができます。

ちなみにfieldsとexcludeの両方を指定してしまうと下記のエラーが出てしまうため注意しましょう。

終わりに

今回はDjango Rest Frameworkにおいてserializerを使うときにfieldsを_all_指定するのではなく、fieldの一部を取り除きたいときどのようにすれば良いのかについてご紹介いたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

直接契約ができるフリーランスエージェント「エンハンス」を立ち上げました。
詳しくは下記LPをご参照ください。
https://enhance.decryption.co.jp/

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






DRF

Posted by ちこ