Django根据以前的查询选择数据库对象

时间:2011-08-20 16:47:44

标签: python sql django orm models

我目前正在开发一个项目,其中有一种方式跟随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

2 个答案:

答案 0 :(得分:2)

我的django正在生锈,但是这里有:

posts = Post.objects.filter(user__following__user=request.user)

答案 1 :(得分:0)

from django.db import transaction

@transaction.commit_manually
def get_posts(following):
    posts = []
    for f in following:
        posts.append(Post.objects.filter(user=f))
    transaction.commit()
    return posts

def home(request):
    following = Following.objects.filter(user=request.user)
    posts = get_posts(following)