Skip to main content
 首页 » 编程设计

python之Django QuerySet 选择相关对象

2024年10月01日3452php

我四处寻找,但没有找到像我这样的情况。假设使用 Django 的 User Profile 方法来扩展默认用户功能,多对象查询集将如何映射到相关对象的查询集。

例如(在模型中):

class UserProfile(models.Model): 
     user = models.OneToOneField(User, on_delete=models.CASCADE) 
 
     friends = models.ManyToManyField("self", symmetrical=True, blank=True) 

在 View 中:

class Friends(generics.ListAPIView): 
 
    queryset=User.objects.all() 
    serializer_class = UserSerializer 
 
    def get_queryset(self): 
        user = self.request.user 
        profile = user.userprofile 
        profiles = profile.friends.all() 
        return profiles  #We want this to be a queryset of users 

我尝试了以下方法,但这仅在 profiles 大小为 1 时有效。

return User.objects.filter(userprofile=profiles) 

请您参考如下方法:

 return User.objects.filter(userprofile__in=profiles)