Django:只获取第一个元素,而不是全部使用过滤器

Django:只获取第一个元素,而不是全部使用过滤器,django,django-queryset,Django,Django Queryset,我有三个模型,看起来像这样: class Blog(models.Model): name = models.CharField(max_length=100) user = models.OneToOneField(User) def __unicode__(self): return self.name class BlogPost(models.Model): title = models.CharField(max_length=100

我有三个模型,看起来像这样:

class Blog(models.Model):
    name = models.CharField(max_length=100)
    user = models.OneToOneField(User)

    def __unicode__(self):
        return self.name

class BlogPost(models.Model):
    title = models.CharField(max_length=100)
    blog = models.ForeignKey(Blog)

    def __unicode__(self):
        return self.title

class Stream(models.Model):
    user = models.OneToOneField(User)
    blog = models.ManyToManyField(Blog, blank=True)

    def __unicode__(self):
        return '%s' % self.user
steam
对象中,我有两个
blog
对象。在第一个
blog
对象中,我有三个
blogpost
在第二个对象中是相同的

然后我创建queryset:

stream = Stream.objects.get(pk=1)
blog = Blog.objects.filter(stream=stream)
print (blog)
<QuerySet [<Blog: Blog object>, <Blog: Blog object>]>
blogpost = BlogPost.objects.filter(blog=blog)
print (blogpost)
<QuerySet [<BlogPost: BlogPost object>, <BlogPost: BlogPost object>, <BlogPost: BlogPost object>]>
stream=stream.objects.get(pk=1)
blog=blog.objects.filter(stream=stream)
印刷(博客)
blogpost=blogpost.objects.filter(blog=blog)
打印(博客帖子)

blogpost
中,我只从第一个
blog
对象元素中获取,而不是从所有元素中获取。有人知道为什么会这样吗?

你需要在
查找中使用
\u

blog = Blog.objects.filter(stream=stream)
blogpost = BlogPost.objects.filter(blog__in=blog)

您需要在
查找中使用
\uu执行此操作

blog = Blog.objects.filter(stream=stream)
blogpost = BlogPost.objects.filter(blog__in=blog)