django queryset:如何通过(向后)相关字段排序?

时间:2009-10-29 13:38:19

标签: django django-models django-queryset

在这种情况下,我有两个模型,评论和分数。这种关系在Score模型中定义,如下所示:

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

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

我的问题是:如何构建一个返回所有注释的查询集,并按Score的值排序?

提前致谢!

马丁

2 个答案:

答案 0 :(得分:4)

您应该将您的分数模型更改为使用OneToOne字段,而不是ForeignKey - FK意味着每个评论有多个分数,这将永远不会有效。

无论如何,查询可以这样完成:

Comment.objects.order_by('score__value')

答案 1 :(得分:1)

我还是Django的新手,但现在已经工作了几个月了。我认为这个代码段可能有效(按递增顺序,用于降序使用'-value'):

comments = [ score.comment for score in Score.objects.order_by('value').all() ]