【问题标题】: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() ]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-11
        • 1970-01-01
        • 1970-01-01
        • 2019-01-15
        • 2017-07-13
        • 2015-08-31
        • 1970-01-01
        相关资源
        最近更新 更多