Django queryset: como fim por um (para trás) campo relacionado?
-
10-07-2019 - |
Pergunta
Nesta situação eu tenho dois modelos, Comentário e Score. A relação é definida no modelo de pontuação, assim:
class Comment(models.Model):
content = TextField()
...
class Score(models.Model):
comment = models.ForeignKey(Comment)
value = models.IntegerField()
A minha pergunta é: Como faço para construir um queryset que retorna todos os comentários e é ordenada pelo valor do Índice
?Agradecemos antecipadamente!
Martin
Solução
Você deve alterar o seu modelo de pontuação de usar um campo OneToOne, não um ForeignKey -. Uma FK implica que há mais de um Score por comentário, que nunca iria trabalho
No entanto qualquer forma, a consulta pode ser feito assim:
Comment.objects.order_by('score__value')
Outras dicas
Eu ainda sou novo para Django, mas vindo a trabalhar w / it por alguns meses agora. Eu acho que este trabalho trecho de poder (em ordem ascendente, descendente para uso '-value'
):
comments = [ score.comment for score in Score.objects.order_by('value').all() ]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow