我想获得用户追随者的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框架。
如果我理解正确,给定一个用户(比如user1(的username
,你想从user1之后的用户中检索所有userprofiles
,对吗?
虽然我不认为这是可能的一个班轮,我认为以下应该是技巧:
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
你应该想要这个。
query_set = User.objects.get(username='username').follow_follower.select_related('follower__profile').all().follower.profile
for query in query_set.all():
print(query.follower.user) # Here is the model for UserProfile.