Django过滤器按ForeignKey相关对象的数量排序

2024-09-24 22:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个网站,上面有徒步旅行的目录,用户可以记录下他们已经进行了这些徒步旅行。我有一个搜索功能,我希望能够根据我的用户完成的次数对我的徒步旅行列表进行排序。我发现这篇文章似乎很相关,但它指的是foreignkey模型中的一个特定字段,而我只想计算一下实例的总数: Django QuerySet ordering by number of reverse ForeignKey matches

下面是一些示例代码:

在模型.py公司名称:

class Hikes(models.Model)
...    

class UserLog(models.Model)
     user = models.ForeignKey(User, on_delete=CASCADE)
     hike = models.ForeignKey(Hikes, on_delete=CASCADE)

我需要从我的Hikes模型生成一个queryset,它统计UserLog引用每次hike的次数,然后从引用最多的到最少的顺序排序。像这样:

在Hikes.objects.order_依据(对于每次提升,在用户日志中统计#个引用,然后按#个引用按#个引用排序)

因此,如果Hike#1有10个UserLog实例,Hike#2有20个,Hike#3有5个,那么QuerySet将返回: 徒步2,徒步1,徒步3

有什么提示吗?在

编辑:感谢viviwill,以下是搜索字段中的工作代码:

^{pr2}$

Tags: 实例代码用户模型model排序models次数