2010-11-26 9 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() 

質問:はどのようにあなたが与えられたユーザーには、次のされていることをユーザーからすべてのポストオブジェクトのクエリセットを作成するのですか?

投稿とのForeignKey関係のモデルではないUserProfileで「フォロー」関係を作成することで、もっと複雑になったと思います。

UPDATE!ここに答えがあります:

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

私はTypeError例外を取得しています: 'ManyRelatedManager' オブジェクトは、反復可能ではありません – mitchf

+0

ああ、私は忘れてしまいました。 "follow"の後に "UserProfile.objects.get(user = your_user_object).following.all()"のように.all()を追加します。動作しない場合は、following.objects.all()に変更してください。私は正確に覚えていない。 – werehuman

+0

ありがとう、それはTypeErrorを修正しましたが、空のセットを返すので、何かがまだ正しくないです。 – mitchf

関連する問題