AttributeError: объект 'tuple' не имеет атрибута 'client' - PullRequest
2 голосов
/ 20 марта 2019

я пытаюсь получить доступ к 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 Ответ

4 голосов
/ 20 марта 2019

Проверьте документы на get_or_create.

Возвращает кортеж (объект, созданный), где объект - это извлеченный или созданный объект, а созданный - логическое значение, указывающее, был ли создан новый объект.

Так что вам нужно что-то вроде:

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

Если вам все равно, было ли оно создано, вы можете использовать подчеркивание в качестве соглашения об одноразовой переменной:

square_credential, _ = SquareCredential.objects.get_or_create(tenant=tenant)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...