2016-12-07 3 views
0

을 사용하여 모든 :장고 : 단지 첫 번째 요소를 받고,하지 내가 다음과 같습니다 세 가지 모델이 필터

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이고 두 번째 것은 같습니다.

그럼 난의 검색어 생성 : 내가 처음 blog 객체 요소 모든로부터에서만 얻을

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>]> 

blogpost에서. 왜 그런 일이 일어나는 지 아십니까?

답변

3

당신은 __in 조회와 함께 할 필요가

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