尝试使用 Flask-Admin 设置模型视图会导致 ImportError
Tyring to set up modelview with Flask-Admin causes ImportError
我正在尝试将用户模型视图添加到 Flask-Admin。但是,我得到 ImportError: cannot import name db
。为什么会发生这种情况,我该如何解决?
app/__init__.py
:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import flask_admin as admin
from app.models import User
db = SQLAlchemy()
admin = admin.Admin(name="Admin Panel")
def create_app(config_name):
app = Flask(__name__)
db.init_app(app)
admin.init_app(app)
admin.add_view(ModelView(User, db.session))
return app
app/models.py
:
from . import db, login_manager
class User(UserMixin, db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
当我添加 admin.add_view(ModelView(User, db.session))
时,我也必须添加 from app.models import User
。添加这些行后出现此错误:
Traceback (most recent call last):
File "manage.py", line 3, in <module>
from app.models import User, Role
File "/home/qadim/PycharmProjects/esouq/app/__init__.py", line 1, in <module>
from app.models import User
File "/home/qadim/PycharmProjects/esouq/app/models.py", line 9, in <module>
from . import db, login_manager
ImportError: cannot import name db
您的代码在 __init__.py
中有行 from app.models import User
。问题是 app.models
有 from . import db
。这是循环导入:__init__
尝试导入 User
,后者尝试导入 db
,直到 __init__
尝试导入 User
之后才定义.要解决此问题,请将您的本地应用程序导入移动到所有全局扩展内容的定义下方。
目前,您的代码类似于:
from flask_sqlalchemy import SQLAlchemy
from app.models import User
db = SQLAlchemy()
您需要将其更改为:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
from app.models import User
我正在尝试将用户模型视图添加到 Flask-Admin。但是,我得到 ImportError: cannot import name db
。为什么会发生这种情况,我该如何解决?
app/__init__.py
:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import flask_admin as admin
from app.models import User
db = SQLAlchemy()
admin = admin.Admin(name="Admin Panel")
def create_app(config_name):
app = Flask(__name__)
db.init_app(app)
admin.init_app(app)
admin.add_view(ModelView(User, db.session))
return app
app/models.py
:
from . import db, login_manager
class User(UserMixin, db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
当我添加 admin.add_view(ModelView(User, db.session))
时,我也必须添加 from app.models import User
。添加这些行后出现此错误:
Traceback (most recent call last):
File "manage.py", line 3, in <module>
from app.models import User, Role
File "/home/qadim/PycharmProjects/esouq/app/__init__.py", line 1, in <module>
from app.models import User
File "/home/qadim/PycharmProjects/esouq/app/models.py", line 9, in <module>
from . import db, login_manager
ImportError: cannot import name db
您的代码在 __init__.py
中有行 from app.models import User
。问题是 app.models
有 from . import db
。这是循环导入:__init__
尝试导入 User
,后者尝试导入 db
,直到 __init__
尝试导入 User
之后才定义.要解决此问题,请将您的本地应用程序导入移动到所有全局扩展内容的定义下方。
目前,您的代码类似于:
from flask_sqlalchemy import SQLAlchemy
from app.models import User
db = SQLAlchemy()
您需要将其更改为:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
from app.models import User