Die Site, die ich erstelle, erlaubt es Benutzern, "Posts" zu erstellen und hat ein Twitter-ähnliches Konzept von Followed-Benutzern. Für einen bestimmten Benutzer möchte ich alle Posts der Benutzer anzeigen, denen sie folgen.Erhalte alle Objekte, die durch eine Django ManyToManyField-Beziehung definiert sind
Hier meine vereinfachte Modelle sind:
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()
Frage: Wie erstellen Sie eine queryset aller Beitrags Objekte aus dem Benutzer, dass ein gegebener User folgt?
Ich glaube, ich habe es komplizierter gemacht, indem ich die "follow" -Beziehung auf UserProfile erstellt habe, was nicht das Modell mit der ForeignKey-Beziehung mit Posts ist.
UPDATE! Hier ist die Antwort:
Posts.objects.filter(user__userprofile__in=UserProfile.objects.get(user=your_user_object).following.all())
Ich erhalte eine Typeerror: 'ManyRelatedManager' Objekt ist nicht iterable – mitchf
oh, ich vergaß. Nach "following" addiere .all(), wie "UserProfile.objects.get (user = your_user_object) .following.all()". Wenn es nicht funktioniert, ändern Sie es in following.objects.all(). Ich erinnere mich nicht genau. – werehuman
Danke, das hat den TypeError behoben, aber etwas ist immer noch nicht ganz richtig, da es einen leeren Satz zurückgibt. – mitchf