首页 > 解决方案 > AttributeError:“元组”对象没有属性“客户端”

问题描述

我试图从模型访问 cached_property 并返回 'tuple' object has no attribute 'client'

这是具有 cached_property 的模型

class Creds(models.Model):
    tenant = models.OneToOneField('tenant.Tenant', unique=True, on_delete=models.CASCADE)


    @cached_property
    def client(self):
        from pos.api_client import APIClient
        return APIClient(self)

这是我试图访问cached_property的地方。并得到错误。

class createCred(APIView):
    def get(self, request, *args, **kwargs):

        tenant = get_object_or_404(Tenant, pk=request['tenant_id'])
        square_credential = SquareCredential.objects.get_or_create(tenant=tenant)
        client = square_credential.client

标签: pythondjangodjango-modelsdjango-rest-framework

解决方案


检查文档以获取get_or_create.

返回 (object, created) 的元组,其中 object 是检索或创建的对象, created 是指定是否创建新对象的布尔值。

所以你需要类似的东西:

square_credential, created = SquareCredential.objects.get_or_create(tenant=tenant)
client = square_credential.client

如果您不关心它是否已创建,您可以使用下划线作为“一次性变量”约定:

square_credential, _ = SquareCredential.objects.get_or_create(tenant=tenant)

推荐阅读