首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用django过滤器获得最畅销的课程?

如何使用django过滤器获得最畅销的课程?
EN

Stack Overflow用户
提问于 2022-05-31 09:26:29
回答 1查看 76关注 0票数 1

我有一个课程模型,用户可以购买这个课程,现在我想用最畅销的课程过滤这些课程,我试过使用django agreegate,但是它似乎没有给我我想要的,或者我没有按照正确的方式去做。

我有models.py来存储课程

代码语言:javascript
复制
class Course(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    course_title = models.CharField(max_length=100, null=True, blank=True)
    slug = models.SlugField(unique=True)
    course_creayor = models.ForeignKey(User, on_delete=models.CASCADE)

我也有这样的模式,它存储购买和注册的课程。

代码语言:javascript
复制
class UserCourse(models.Model):
    user = models.ForeignKey(User , null = False , on_delete=models.CASCADE)
    course = models.ForeignKey(Course , null = False , on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now_add=True)

我不知道如何从下面的图片中筛选出最畅销的课程,你可以看到learn angular updated是创建者destiny最畅销的课程。那么,我如何过滤每个用户,他们的大部分销售过程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-31 14:19:36

您可以尝试按以下方式注释课程计数:

代码语言:javascript
复制
course_counts = UserCourse.objects.values("course").annotate(count=models.Count("course"))

然后分类:

代码语言:javascript
复制
sorted_courses = sorted(course_counts, key=lambda x: x['count'],reverse=True)

您将拥有包含最高的sorted_courses[0],并且可以从dict检索UUID

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72445306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档