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())
私はTypeError例外を取得しています: 'ManyRelatedManager' オブジェクトは、反復可能ではありません – mitchf
ああ、私は忘れてしまいました。 "follow"の後に "UserProfile.objects.get(user = your_user_object).following.all()"のように.all()を追加します。動作しない場合は、following.objects.all()に変更してください。私は正確に覚えていない。 – werehuman
ありがとう、それはTypeErrorを修正しましたが、空のセットを返すので、何かがまだ正しくないです。 – mitchf