djangoクエリセット:(後方)関連フィールドで注文する方法は?
-
10-07-2019 - |
質問
この状況では、コメントとスコアの2つのモデルがあります。関係は、次のようにスコアモデルで定義されます。
class Comment(models.Model):
content = TextField()
...
class Score(models.Model):
comment = models.ForeignKey(Comment)
value = models.IntegerField()
私の質問は次のとおりです。すべてのコメントを返し、スコアの値の順に並べられたクエリセットを作成するにはどうすればよいですか?
事前に感謝します!
マーティン
解決
ForeignKeyではなくOneToOneフィールドを使用するようにスコアモデルを変更する必要があります。FKは、コメントごとに複数のスコアがあることを意味します。これは機能しません。
ただし、どちらの方法でも、クエリは次のように実行できます。
Comment.objects.order_by('score__value')
他のヒント
私はまだDjangoに慣れていませんが、今は数か月間働いています。私はこのスニペットがうまくいくと思います(昇順で、降順では '-value'
を使用します):
comments = [ score.comment for score in Score.objects.order_by('value').all() ]
所属していません StackOverflow