AttributeError:“元组”对象没有属性“ client”

时间:2019-03-20 16:44:00

标签: python django django-models django-rest-framework

im试图从模型中访问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

1 个答案:

答案 0 :(得分:4)

检查文档中的get_or_create

  

返回(对象,已创建)的元组,其中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)