(私はpythonとdjangoを初めて使用するので、しばらくお待ちください。これが他の場所で回答されていて、見つからなかった場合はお詫びします)
リンク モデルがあり、django-voting アプリケーションを介してユーザーがリンク インスタンスに投票できるとします。スコアに従ってこれらのリンク インスタンスを順序付けるにはどうすればよいですか。スコアの高いものを最初に表示します。
django-voting の get_top マネージャーを使用できると思いますが、それは最高スコアのリンク インスタンスのみを提供し、追加したい他のパラメーター (たとえば、特定のユーザーに属するリンク) を考慮しません。またはページングなど)。
私の推測では、各アイテムのスコアに従ってクエリセットをフィルター処理できるリンク モデル用のカスタム マネージャーを作成することになるでしょう。各項目をループする必要があることを正しく理解していれば、そのスコアを確認してから、各項目のスコアに従ってソートされるリスト (または辞書) に配置します。それはクエリセットではなく、各アイテムの辞書を返します。
ここで何か不足していますか?
編集:
以下は、Link モデルの簡素化されたバージョンです。
class Link(models.Model):
user = models.ForeignKey('auth.User')
category = models.ForeignKey(Category)
date = models.DateTimeField( auto_now_add=True, null=True, blank=True )
is_deleted = models.BooleanField(default=False, blank=True)
links = ValidLinkManager()
objects = models.Manager()
ユーザーが投票すると、次のように表示されます。
Vote.objects.record_vote(link, user, vote)
ここで、link は Link インスタンス、user は auth.User のインスタンス、vote は 1、0、または -1 のいずれかです。ValidLinkManager は、is_deleted が True に設定されているリンクを除外するだけです。