プログラミング

[Django]Querysetで仮想フィールドを定義する

プログラミング
この記事は約2分で読めます。
スポンサーリンク

Djangoでサーバサイドの開発しているときにquerysetfilterメソッドでデータの抽出処理を記述するんですが、取得したデータをクライアントサイドで結合するのがめんどくさくなり、どうにかサーバ側で結合したデータを取得できないか調べてみました。

スポンサーリンク

前提条件

  • Python:3.6.2
  • Django:3.0.2

実現方法

Djangoquerysetextraメソッドを使用すると実現できそうです。

QuerySet API reference | Django ドキュメント | Django

extraメソッドを利用するとSELECT句をそのまま書けるみたいなので、下記のように実装すれば文字列結合済の仮想フィールドを取得できます。

Userモデルに名字(last_name)、名前(first_name)がある場合、フルネームを一つのフィールドとして取得したい場合、

users = User.objects.extra(select={'full_name': "concatenate(last_name, first_name)"})

のように実装すれば、「名字 + 名前」を「full_name」という仮想フィールドで取得することができます。

最後に

サーバサイドでできることはサーバサイドでやっておけば、クライアントサイドの負荷を減らすことができるのでこういったカスタマイズをしっかり覚えておきたいですね。

スポンサーリンク
スポンサーリンク
KoEをフォローする
CodeLab

コメント

タイトルとURLをコピーしました