鉴于我的应用程序模型的这种简化表示,我的问题是如何在全球范围内找到最受欢迎的MyModel
?也就是说,那些MyModel
被MyUser
s最受欢迎。
我遇到过有关如何找到喜欢的标签的类似博文,但我不认为这些适用于这种特殊情况。
class MyUser(models.Model):
favorite_models = models.ManyToManyField(MyModel)
...
class MyModel(models.Model):
name = models.CharField(...)
...
这可以在一个查询中完成吗?或者我是否需要遍历每个MyUser
和MyModel
以确定最受欢迎的?提前谢谢!
答案 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/)