2010-11-26 3 views
5

내가 만들고있는 사이트는 사용자가 "게시물"을 만들 수 있고 따라 다니는 사용자의 Twitter와 유사한 개념을 가지고 있습니다. 특정 사용자의 경우 내가 팔로우 한 모든 게시물을 표시하고 싶습니다. 여기Django ManyToManyField 관계로 정의 된 모든 객체 가져 오기

내 단순화 된 모델입니다 :

class User 
    # a standard django.contrib.auth user model 

class UserProfile(models.Model): 
    # my AUTH_PROFILE_MODULE for django-profiles 
    user = models.ForeignKey(User, unique=True) 
    following = models.ManyToManyField('self', symmetrical=False, related_name="followed_by") 

class Posts(models.Model): 
    user = models.ForeignKey(User) 
    post = models.TextField() 

질문 : 어떻게 주어진 사용자가 다음하고있는 사용자의 모든 포스트 객체의 검색어 세트를 만들려면 어떻게해야합니까?

Posts와 ForeignKey 관계가있는 모델이 아닌 UserProfile에서 "follow"관계를 작성하여 좀 더 복잡하게 만들었다 고 생각합니다.

업데이트! 여기에 답이있다 :

Posts.objects.filter(user__userprofile__in=UserProfile.objects.get(user=your_user_object).following.all()) 

답변

7
Posts.objects.filter(user__in=UserProfile.objects.get(user=your_user_object).following) 
+0

가 나는 형식 오류를 받고 있어요 : 'ManyRelatedManager'개체를 반복 가능하지 – mitchf

+0

아, 잊어 버렸습니다. "follow"다음에 "UserProfile.objects.get (user = your_user_object) .following.all()"과 같은 .all()을 추가하십시오. 작동하지 않으면 follow.objects.all()로 변경하십시오. 나는 정확하게 기억하지 않는다. – werehuman

+0

고마워요, TypeError가 수정되었지만, 빈 세트를 반환하기 때문에 뭔가가 여전히 올바르지 않습니다. – mitchf

관련 문제