django queryset: Wie durch eine (rückwärts) bezogenes Feld bestellen?
-
10-07-2019 - |
Frage
In dieser Situation habe ich zwei Modelle, Kommentieren und Score. Die Beziehung ist in dem Score-Modell definiert, etwa so:
class Comment(models.Model):
content = TextField()
...
class Score(models.Model):
comment = models.ForeignKey(Comment)
value = models.IntegerField()
Meine Frage ist: Wie kann ich eine queryset konstruieren, das alle Kommentare zurück und wird durch den Wert von Score bestellt
Vielen Dank im Voraus!
Martin
Lösung
Sie sollten Ihr Score-Modell ändern, um ein OneToOne Feld zu verwenden, keine ForeignKey -. Ein FK bedeutet mehr als ein Score pro Kommentar ist, die nie funktionieren würde
Doch so oder so, kann die Abfrage wie folgt durchgeführt werden:
Comment.objects.order_by('score__value')
Andere Tipps
Ich bin zu Django noch neu, aber jetzt w / es für ein paar Monate gearbeitet. Ich denke, das Snippet könnte (in aufsteigender Reihenfolge für den Einsatz '-value'
absteigend) arbeiten:
comments = [ score.comment for score in Score.objects.order_by('value').all() ]