Ein QuerySet zusammengefassten Feld Wert

Sagen wir, ich habe das folgende Modell:

class Contest:
    title = models.CharField( max_length = 200 )
    description = models.TextField()

class Image:
    title = models.CharField( max_length = 200 )
    description = models.TextField()
    contest = models.ForeignKey( Contest )
    user = models.ForeignKey( User )

    def score( self ):
        return self.vote_set.all().aggregate( models.Sum( 'value' ) )[ 'value__sum' ]

class Vote:
    value = models.SmallIntegerField()
    user = models.ForeignKey( User )
    image = models.ForeignKey( Image )

Benutzer einer Website beitragen können, Ihre Bilder auf mehrere Wettbewerbe. Dann andere Benutzer können abstimmen, nach oben oder nach unten.

Alles einwandfrei funktioniert, aber jetzt will ich eine Seite anzeigen, auf denen Benutzer können alle Beiträge auf einen bestimmten wettkampf. Die Bilder sind in der Reihenfolge Ihrer Punktzahl.
Deshalb habe ich versucht, die folgenden:

Contest.objects.get( pk = id ).image_set.order_by( 'score' )

Wie ich es befürchtet habe, es funktioniert nicht, weil 'score' ist kein Datenbank-Feld, das könnte in Abfragen verwendet werden.

InformationsquelleAutor okoman | 2009-01-24
Schreibe einen Kommentar