Как получить список объектов, используя несколько отношений модели в 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