首页 > 解决方案 > 使用 Django ORM 查询数据以返回属于用户的特定数据

问题描述

所以我正在尝试构建一个分类帐应用程序。当新用户注册时,他们会创建一个链接到他们的新企业帐户 (ForeignKey)。这是我的模型:

User = get_user_model()

class Business_Account(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
business_name = models.CharField(max_length=50)
Type_of_service = models.CharField(choices=SERVICE_CATEGORIES, max_length=50)
business_email_address = models.EmailField(max_length=254)

class Meta:
    verbose_name = "Business_Account"
    verbose_name_plural = "Business_Accounts"

def __str__(self):
    return self.business_name

现在,我想创建一个获取请求视图,该视图可以查询并返回属于特定用户的企业帐户。我当前的视图只返回数据库中所有可用的业务帐户,无论哪个用户登录。这是我的看法:

class AddBusinessAcctView(APIView):
def get_object(self):
    try:
        return Business_Account.objects.all()
    except:
        raise status.HTTP_404_NOT_FOUND

def get(self,request):
    queryset = self.get_object()
    serializer = BusinessAcctSerializer(queryset, many=True)
    return Response(data=serializer.data, status=status.HTTP_200_OK)

现在,如何查询属于特定用户的企业帐户?提前致谢

标签: pythondjangodatabasedjango-rest-frameworkbackend

解决方案


通常,您将拥有身份验证和尝试为其检索信息的登录用户。假设您要执行此操作,则该用户在request对象中可用。

Business_Account.objects.get(user=request.user)

但总的来说,你可以这样做:

user = User.objects.get(username='john')
Business_Account.objects.get(user=request.user)

# or
Business_Account.objects.get(user_id=123456)

推荐阅读