我有一个课程模型,用户可以购买这个课程,现在我想用最畅销的课程过滤这些课程,我试过使用django agreegate,但是它似乎没有给我我想要的,或者我没有按照正确的方式去做。
我有models.py来存储课程
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)我也有这样的模式,它存储购买和注册的课程。
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最畅销的课程。那么,我如何过滤每个用户,他们的大部分销售过程?

发布于 2022-05-31 14:19:36
您可以尝试按以下方式注释课程计数:
course_counts = UserCourse.objects.values("course").annotate(count=models.Count("course"))然后分类:
sorted_courses = sorted(course_counts, key=lambda x: x['count'],reverse=True)您将拥有包含最高的sorted_courses[0],并且可以从dict检索UUID。
https://stackoverflow.com/questions/72445306
复制相似问题