问题描述
python flask 项目,借助 flask_script pycharm 启动项目时,无法创建模型多对多的关联表
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
manager.py :
from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand
# 导入model,才能创建成功
from app.models import Student
from appcore import app
from app.models import db
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
# def make_shell_context():
# return dict(app=current_app, db=db)
#
#
# manager.add_command("shell", Shell(make_context=make_shell_context))
@manager.command
def create_db():
db.create_all()
if __name__ == '__main__':
manager.run()
model Student 类代码:
registrations = db.Table('registrations',
db.Column('student_id', db.Integer, db.ForeignKey('students.id')),
db.Column('class_id', db.Integer, db.ForeignKey('classes.id'))
)
class Student(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
classes = db.relationship('Class',secondary=registrations,
backref=db.backref('students', lazy='dynamic'),
lazy='dynamic')
在 manager.py 中需导入对应模型才可以创建成功,但是其中关联表
registrations 如何导入呢,如何才能在启动时自动创建呢?希望大神解惑一下,谢谢
此问题已经解决,在这里说下以方便遇到同样问题的伙伴解决。
其中管理表中需加入 metadata,不然会报错,如下:
其中 db.Model 对应模型的继承类,即 class Student(db.Model) ,如果封装了 base 类需注意。