Le site que je suis en train de créer permet aux utilisateurs de créer des "posts" et a un concept similaire à celui de Twitter des utilisateurs suivis. Pour un utilisateur donné, j'aimerais montrer tous les messages des utilisateurs qu'ils suivent.Obtention de tous les objets définis par une relation Django ManyToManyField
Voici mes modèles simplifiés:
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()
Question: Comment créer un queryset de tous les objets Publier des utilisateurs qu'un utilisateur donné suit?
Je pense que je l'ai rendu plus compliqué en créant la relation "follow" sur UserProfile, qui n'est pas le modèle avec la relation ForeignKey avec Posts.
MISE À JOUR! Voici la réponse:
Posts.objects.filter(user__userprofile__in=UserProfile.objects.get(user=your_user_object).following.all())
Je reçois TypeError: objet 'ManyRelatedManager' est pas itérables – mitchf
oh, j'ai oublié. Après "suivi" ajoutez .all(), comme "UserProfile.objects.get (utilisateur = votre_utilisateur_utilisateur) .suivant.all()". Si cela ne fonctionne pas, remplacez-le par following.objects.all(). Je ne me souviens pas exactement. – werehuman
Merci, cela a corrigé le TypeError, mais quelque chose n'est toujours pas correct car il retourne un ensemble vide. – mitchf