【问题标题】:Django determine "most popular"Django 确定“最受欢迎”
【发布时间】:2012-12-16 07:29:48
【问题描述】:

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

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

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


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

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

【问题讨论】:

  • 您当然可以在查询中执行此操作,就像使用 sql 一样。不过,我不记得确切的语法了..

标签: sql django django-models django-queryset


【解决方案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/

【讨论】:

    猜你喜欢
    • 2021-02-20
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 2012-03-24
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多