Как получить список объектов, используя несколько отношений модели в Django?

Я хочу получить список UserProfile последователей пользователя из имени пользователя

У меня есть следующие модели :

class User(AbstractBaseUser, PermissionsMixin):
    username = models.CharField(max_length=16, unique=True, db_index=True)
#   ...

class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name="profile", on_delete=models.CASCADE)
#   ...

class UserFollow(models.Model):
    follower = models.ForeignKey(User, related_name="follow_follower", on_delete=models.CASCADE)
    following = models.ForeignKey(User, related_name="follow_following", on_delete=models.CASCADE)
    date_created = models.DateTimeField(auto_now_add=True, editable=False)
#   ...

Как этого добиться, оптимизируя запросы к базе данных?

Я использую rest framework.

Если я правильно понимаю, задав username пользователя (скажем, user1), вы хотите получить все userprofiles от пользователей, следующих за user1, верно?

В то время как я не думаю, что это возможно с помощью одной строки, я думаю, что следующее должно помочь:

followers = UserFollow.objects.filter(following__username=username).values('follower')
follower_profiles = UserProfile.objects.filter(user__in=followers)

Я видел ваше сообщение, вы хотите : follower_profiles = User.objects.get(username=username).follow_following.all().follower.profile

Вы должны хотеть этого.

User.objects.get(username='username').follow_follower.select_related('follower__profile').all().follower.profile
Вернуться на верх