【发布时间】:2011-10-31 06:48:17
【问题描述】:
我目前正在开展一个项目,其中有 twitter 风格的一种方式关注,我无法弄清楚如何根据用户关注的人在数据库中选择“帖子”。
我正在使用默认用户功能,然后这是我的以下模型:
class Following(models.Model):
user = models.ForeignKey(User, related_name="user")
following = models.ForeignKey(User, related_name="following")
和我的帖子模型:
class Post(models.Model):
title = models.CharField(max_length=100)
text = models.TextField()
user = models.ForeignKey(User)
date_time = models.DateTimeField(auto_now=True)
最后,从我的角度来看,我正在努力工作:
def home(request):
following = Following.objects.filter(user=request.user)
posts = Post.objects.filter(/*not sure what to put here*/)
我整晚都在努力让它工作,但我真的找不到解决方案,所以任何帮助都会很棒。
如果您可能需要查看我未在此处发布的任何内容,github repository for this project is here
【问题讨论】:
-
如果我理解正确的话,也许你应该遍历视图中的“关注”并获取与每个用户相关的所有帖子。然后将结果附加到列表中。
-
我认为这可能会奏效,但是如果您关注 x 个人,则必须进行 x 次 sql 查询,我认为这可能对性能非常不利。
-
是的,但您也可以对 Q 对象使用复杂查找,如 docs.djangoproject.com/en/dev/topics/db/queries/… 中所述。我的意思是,遍历“以下”并创建一个 Q 查询。退出循环后,运行查询。
-
类似...
posts = Post.objects.filter(for follow in followers: Q(user=follow),)? -
对不起,我把你转错了方向。请看下面的答案。
标签: python sql django orm models