Нет такой таблицы База данных Django - PullRequest
0 голосов
/ 14 мая 2018

Итак, я создал модель для хранения учетных данных пользователей Gmail. Я хотел сделать миграцию, но там написано, что такой таблицы нет:

django.db.utils.OperationalError: no such table: mainApp_credentialsmodel

Мои модели:

from django.db import models

# Create your models here.

from django.contrib.auth.models import User
from django.db import models
import json


class CredentialsModel(models.Model):
  id = models.ForeignKey(User, primary_key=True,on_delete=models.CASCADE)
  credential = models.CharField(max_length=1000)

Вызов этой модели для проверки авторизации:

SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'

store = CredentialsModel.objects.all()
creds = store.get()


if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('mainApp/client_secret.json', SCOPES)
        creds = tools.run_flow(flow, store)
service = build('gmail', 'v1', http=creds.authorize(Http()))

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Похоже, ваш код авторизации, включая запрос к CredentialsModel, находится на уровне модуля.Это означает, что он запускается при импорте модуля, что происходит до того, как миграция успела запустить.

Необходимо убедиться, что любой код доступа к базе данных находится внутри функции или метода и не вызывается глобально.

0 голосов
/ 14 мая 2018

python manage.py makemigrations Если эта ошибка повторяется, проверьте папку с миграциями и проверьте файлы внутри.Также проверьте, есть ли ваша база данных в сети, если у вас есть база данных в сети, у меня была эта проблема на прошлой неделе, но это была проблема с лазурью.В последнем случае я бы снова создал таблицу (модель), изменив имя на что-то похожее, но если в этой таблице содержится значительный объем данных, то я думаю, что вы не сможете этого сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...