Получить все объекты, определенные отношением Django ManyToManyField - PullRequest
5 голосов
/ 26 ноября 2010

Сайт, который я создаю, позволяет пользователям создавать «посты» и имеет Twitter-концепцию подписчиков.Для данного пользователя я хотел бы показать все сообщения пользователей, на которых он подписан.

Вот мои упрощенные модели:

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()

Вопрос: Как вы создаете набор запросов для всех объектов Post из пользователей, за которыми следует данный пользователь?

Я думаю, что усложнил это, создав отношение «следовать» в UserProfile, которое не является моделью отношения ForeignKey с сообщениями.

ОБНОВЛЕНИЕ!Вот ответ:

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

1 Ответ

7 голосов
/ 26 ноября 2010
Posts.objects.filter(user__in=UserProfile.objects.get(user=your_user_object).following)
...