我试图从模型访问缓存的属性并返回
'tuple' object has no attribute 'client'
这是具有cached_属性的模型

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_属性的地方。得到错误。
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

最佳答案

查看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)

10-02 08:17