Django确定“最受欢迎”

时间:2013-01-01 19:21:36

标签: sql django django-models django-queryset

鉴于我的应用程序模型的这种简化表示,我的问题是如何在全球范围内找到最受欢迎的MyModel ?也就是说,那些MyModelMyUser s最受欢迎。

我遇到过有关如何找到喜欢的标签的类似博文,但我不认为这些适用于这种特殊情况。

class MyUser(models.Model):
  favorite_models = models.ManyToManyField(MyModel)
  ...


class MyModel(models.Model):
  name = models.CharField(...)
  ...

这可以在一个查询中完成吗?或者我是否需要遍历每个MyUserMyModel以确定最受欢迎的?提前谢谢!

1 个答案:

答案 0 :(得分:1)

我懒得从零开始创建一个django项目,但是这个应该做的工作:

from django.db.models import Count
MyModel.objects.annotate(Count('myuser'))

(或者这个)

MyModel.objects.annotate(Count('myuser_set'))

如果没有,试试这个:

class MyUser(models.Model):
    favorite_models = models.ManyToManyField(MyModel, related_name='myuser')

然后

MyModel.objects.annotate(Count('myuser_set'))

(如果有效,请告诉我,无论如何,此页面应包含您需要执行的操作:https://docs.djangoproject.com/en/dev/topics/db/aggregation/