因此,我创建了一个用于存储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()))
答案 0 :(得分:0)
python manage.py makemigrations 如果发生错误,请检查迁移文件夹并检查其中的文件。另外检查如果您的数据库在线,如果您有在线数据库,我上周遇到了这个问题,但这是天蓝色的问题。 在最后一种情况下,我将再次创建表(模型),将名称更改为类似的名称,但如果您在该表中有大量数据,那么我认为您不能这样做。
答案 1 :(得分:0)
看起来您的授权代码(包括CredentialsModel上的查询)位于模块级别。这意味着它在导入模块时运行,这在迁移有可能运行之前发生。
您必须确保任何数据库访问代码都在函数或方法中,并且不会全局调用。