Domanda

In questa situazione ho due modelli, Comment e Score. La relazione è definita nel modello di punteggio, in questo modo:

class Comment(models.Model):
    content = TextField()
    ...

class Score(models.Model):
    comment = models.ForeignKey(Comment)
    value = models.IntegerField()

La mia domanda è: come si costruisce un queryset che restituisce tutti i commenti ed è ordinato in base al valore di Score?

Grazie in anticipo!

Martin

È stato utile?

Soluzione

Dovresti cambiare il tuo modello di punteggio per usare un campo OneToOne, non un tasto ForeignKey - un FK implica che c'è più di un punteggio per commento, che non funzionerebbe mai.

Comunque sia, la query può essere fatta in questo modo:

Comment.objects.order_by('score__value')

Altri suggerimenti

Sono ancora nuovo di Django, ma ci sto lavorando da un paio di mesi. Penso che questo snippet potrebbe funzionare (in ordine crescente, per l'uso decrescente '-value' ):

comments = [ score.comment for score in Score.objects.order_by('value').all() ]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top