【Django】order_byで複数のフィールドの平均値を使う方法

320, 2020-04-29

目次

order_byに複数のフィールドの平均値を指定する

↓のようなモデルがあった。

class MyModel(models.Model):
    star_1 = models.IntegerField(default=0)
    star_2 = models.IntegerField(default=0)
    star_3 = models.IntegerField(default=0)

star_1, star_2, star_3 の各フィールドの合計の平均値をorder_byに指定したかった。
調べると↓が見つかった。

↑を参考に↓のようにしたところうまくいった。

MyMode.objects.extra(select={
    'star_avg': '(star_1 + star_2 + star_3) / 3',
}).extra(order_by=['star_avg'])

Webアプリケーションの制作ならNARUPORT

Webアプリケーションの制作ならNARUPORTにお任せください。
Webアプリの他にもGUIアプリやChromeExtension, スクリプトの制作など可能です。
以下のお問い合わせフォームからご依頼ください!

投稿者名です。64字以内で入力してください。

必要な場合はEメールアドレスを入力してください(全体に公開されます)。

投稿する内容です。

スポンサーリンク

スポンサーリンク

スポンサーリンク

スポンサーリンク