User
- это модель Flask-SQLAlchemy
, которая оборачивает модели, используя API-интерфейс SQLalchemy.Он наследует все свои модели от объекта db
, который, я полагаю, вы создаете или регистрируете в методе create_app
.
Итак, у вас должно быть что-то вроде
db = SQLAlchemy()
def create_app(config):
app = Flask(__name__)
db.init_app(app)
adm = Admin(app,name='flaskadmin')
from app.models import User
adm.add_view(ModelView(User, db.session))
return app
Всякий раз, когда вы импортируете User
из user.py
, вы в основном импортируете db.Model
, для чего требуется, чтобы db
существовал и фактически содержал данные.Остерегайтесь циклического импорта во Flask и в Python в целом.
Полученная вами ошибка четко указана в трассировке ошибок
File "E:\ENVS\r3\flask-base\app\models\user.py", line 7, in <module>
from .. import db, login_manager
ImportError: cannot import name 'db'
Это означает, что в user.py
есть импорт db
из ../__init__.py
, но в этом файлеимпорт User
происходит до определения db
.
Объект db
эмулирует подход declarative
из SQLAlchemy , где объект содержит данные обо всех других классах, унаследованных от него.