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)