質問

こんにちはいうオブジェに基づく計算値にdjango...どのような

ここでは一例ですユーザープロファイルのモデルに基づくスタックオーバーフローを説明した苦境:

class Profile(models.Model):
    user = models.ForeignKey(User)

    def get_reputation():
        ... 
        return reputation
    reputation = property(get_reputation)

いったいソートユーザーによる評判です。そうい?私だけではできないこと:

Profile.objects.order_by("-reputation")

でも少しでも皆さんの力になれ:)

役に立ちましたか?

解決

あなたは(あなたがたくさんのレコードを持っており、それらをページ付けなどする必要があるため)、データベースにソートを行う必要がある場合、唯一の現実的な選択肢は、非正規化フィールドに評判を有効にすることです(例えば上のオーバーライドされたsave()方法で更新モデル)。

他のヒント

あなたの計算コードのみのPythonの中に存在しているので、あなたにもPythonでソートを実行する必要があります:

sorted (Profile.objects.all (), key = lambda p: p.reputation)

としてのDjango-1.8で並べ替えQuerySet用 クエリを表現 として計算値で描画されるSQL.も利用できます annotations のモデルとしての order_by ます。

from django.db.models import F
Profile.objects.annotate(reputation=(F('<field>') + ...)).order_by("-reputation")

基本的な操作のように +, -, *, /** 使用可能 F().また他にもいくつかの機能など Count, Avg, Max, ...

リンク:

またこのQ&A 注QuerySetによる集合フィールド値

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top