python - Django:按多对多关系的字段排序

标签 python django sorting django-models

给定 django 模型 A 和 B:

class A(models.Model):
    things = models.ManyToManyField('B')

class B(models.Model):
    score = models.FloatField()
    text = models.CharField(max_length=100)

如何获取 A 的列表? text 订购的实体得分最高的 Bthings

最佳答案

这种事情真的很难。如果您想按分数排序,聚合可以帮助您:

from django.db.models import Max
A.objects.annotate(highest_b=Max(B__score)).order_by('highest_b')

但实际上您想要执行两个操作:按最高分数聚合,然后按具有该分数的项目的文本排序。无论您使用哪种语言,这都是棘手的。我已经写过关于这个问题的文章 on my blog - 出于您的目的,我认为通过 .raw() 方法在 SQL 中执行此操作可能是最简单的。

关于python - Django:按多对多关系的字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4309062/

相关文章:

java - 在Java中对阿拉伯语单词进行排序

Django外键表单保存

C++如何将排序的 vector 合并到排序的 vector 中/从所有 vector 中弹出最少的元素?

python - django urls.py 无法处理 url

python - OAUTH2 Python Facebook 登录

django - 在 Django 中显示一系列包含过去日期的下拉列表

Django SSL 错误

c - 使用宏对 3 个数字进行排序 [C]

找不到元素时 Python Selenium 崩溃

python - 在多个字符串中搜索多个单词