querysetでextraを使って新たに定義したものについてorder_byする方法

2020年1月3日

今回はDjangoのquerysetでextraを使って新たに定義したものについてorder_byする方法についてご紹介いたします。



querysetでextraを使って新たに定義したものについてorder_byする方法

最初に結論を言ってしまうと、以下のソースを使うことでquerysetでextraを使って新たに定義したものについて昇順で整列させることができます。

例として次のBookモデルがあるとします。

今Bookオブジェクトは3つあり、それぞれ保持する値は次の通りだとします。

Bookモデルに関して、extraを使って新たに税込みの値段を表す’taxPrice’を定義するとします。
extraを使ってpriceに10パーセントの税率をかけたtaxPriceを新たに定義します。

このtaxPriceでソートをかけたいとします。(taxPriceを使わずともそのままpriceでソートをかければ同じ結果になりますが、あくまでも例です。)

冒頭のソースをいじって、次のソースを準備します。

上記ソースを実行すると次のようになります。

長くなってしまうのでソースの解説はしません。
対話型シェルで1行ずつ実行結果を探ればどういうロジックなのかが分かると思います。

終わりに

今回はDjangoのquerysetでextraを使って新たに定義したものについてorder_byする方法についてご紹介いたしました。

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






Django

Posted by ちこ