0

鉴于我的应用程序模型的这种稍微简化的表示,我的问题是如何在全球范围内找到最流行的MyModel?即,那些MyModels 是 s 最喜欢MyUser的。

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

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


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

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

4

1 回答 1

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/ )

于 2013-01-01T19:48:48.920 回答