如何通过汇总相关模型的最后N条记录进行过滤

我的目标是使用Django ORM开发一个查询,该查询将返回系统中所有其最近50篇帖子中的一半不到被喜欢的用户。

我开发了一个查询,使所有拥有不到一半喜欢的用户的所有用户都获得了查询,但是我不知道如何限制我只希望看到的帖子的范围该用户的前50条帖子。

出于性能原因,我宁愿将操作保留在单个查询中。

我的模型的摘要版本

class User(models.Model):
  pass
class Post(models.Model):
  author = models.ForeignKey(
    "user.User",related_name="posts",on_delete=models.CASCADE
  )
  likes = models.PositiveIntegerField()

我的现有查询

unpopular_users = User.objects.annotate(
  posts_created=Cast(
    Count('posts'),output_field=FloatField()
  ),posts_liked=Cast(
    Count(Case(When(posts__likes__gt=0,then=1))),output_field=FloatField()
  )
).exclude(posts_created=0).annotate(
  liked_rate=F("posts_liked") / F("posts_created")
).filter(liked_rate__lt=Decimal('0.5'))
yashuhan 回答:如何通过汇总相关模型的最后N条记录进行过滤

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3092038.html

大家都在问