【问题标题】:django queryset: how to order by a (backwards) related field?django queryset:如何按(向后)相关字段排序?
【发布时间】:2009-10-29 13:38:19
【问题描述】:
在这种情况下,我有两个模型,评论和评分。关系在 Score 模型中定义,如下所示:
class Comment(models.Model):
content = TextField()
...
class Score(models.Model):
comment = models.ForeignKey(Comment)
value = models.IntegerField()
我的问题是:如何构造一个返回所有评论并按分数值排序的查询集?
提前致谢!
马丁
【问题讨论】:
标签:
django
django-models
django-queryset
【解决方案1】:
您应该更改您的 Score 模型以使用 OneToOne 字段,而不是 ForeignKey - FK 意味着每个评论有多个 Score,这永远不会起作用。
无论哪种方式,查询都可以这样完成:
Comment.objects.order_by('score__value')
【解决方案2】:
我还是 Django 的新手,但已经使用它工作了几个月。我认为这个 sn-p 可能有效(按升序,降序使用'-value'):
comments = [ score.comment for score in Score.objects.order_by('value').all() ]