如何在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框架。

如果我理解正确,给定一个用户(比如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.

最新更新