【发布时间】:2016-01-25 08:39:29
【问题描述】:
我有一个 Django 应用程序,用户在其中登录,设置各种主题,然后将 cmets 留在所述主题下。以下模型反映了这种基本设置:
class Topic(models.Model):
topic_text = models.TextField()
submitted_on = models.DateTimeField(auto_now_add=True)
class Comment(models.Model):
comment_text = models.TextField()
which_topic = models.ForeignKey(Topic)
submitted_by = models.ForeignKey(User)
submitted_on = models.DateTimeField(auto_now_add=True)
对于每个用户,我正在尝试获取 所有主题,其中任何一个 最近的 5 个 cmets 是由用户编写的。换句话说,如果用户在某个主题的最近 5 个 cmets 中没有发表评论,则该主题将被排除在查询集中。
那么我该如何形成这个查询集呢?顺便说一句,我打算向您展示我尝试过的方法,但它非常不充分,而且显然是错误的。有人可以帮忙吗?
【问题讨论】:
-
我认为尝试选择该用户评论过的主题是没有意义的,并且只有评论在前 5 名之内,尽管使用嵌套查询可能是可能的。相反,我宁愿选择这个用户评论过的主题,然后根据评论在代码中的位置过滤它们(并缓存它,因为它很重)。
-
我同意。 然后按评论的位置过滤它们部分,我发现几乎不可能绕开我的头。
标签: python django django-queryset