请问七月老师,flask多对多关系必须 三张表必须要在同意个文件夹下么
来源:2-3 新建入口文件

潇洒走一会啊
2018-09-12
关于表之间多对多的关系,我现在有user表 和 role 还有一张user_role的中间表
user模型如下
from app.models.base import Base, db, MixinJSONSerializer
from app.models.user_role import user_role
from app.models.role import Role
class User(Base):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(50))
realname = db.Column(db.String(50))
avatar = db.Column(db.String(255))
phone = db.Column(db.String(15))
password = db.Column(db.String(255))
create_time = db.Column(db.DateTime)
update_time = db.Column(db.DateTime)
user_group_id = db.Column(db.Integer, name='usergroup_id')
role = db.relationship('Role', secondary=user_role, backref='user')
def keys(self):
return ['id', 'username', 'realname', 'avatar', 'phone', 'user_group_id']
user表中我主要导入了 Role模型,与中间user_role的table
role模型如下
from app import db
from app.models.base import Base
class Role(Base):
__tablename__ = 'role'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(32), index=True, nullable=True)
user_role模型如下
from app.models.base import db
user_role = db.Table('user_role',
db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True),
db.Column('role_id', db.Integer, db.ForeignKey('role.id'), primary_key=True)
)
这是我查找的 SQLAlchemy 0.9 Documentation 的相关文档
当我注释掉user模型中的 from app.models.role import Role 就会报错
这是注释掉导入Role之后的代码
from app.models.base import Base, db, MixinJSONSerializer
from app.models.user_role import user_role
# from app.models.role import Role
class User(Base):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(50))
realname = db.Column(db.String(50))
avatar = db.Column(db.String(255))
phone = db.Column(db.String(15))
password = db.Column(db.String(255))
create_time = db.Column(db.DateTime)
update_time = db.Column(db.DateTime)
user_group_id = db.Column(db.Integer, name='usergroup_id')
role = db.relationship('Role', secondary=user_role, backref='user')
def keys(self):
return ['id', 'username', 'realname', 'avatar', 'phone', 'user_group_id']
当然如果正常导入Role模型是可以正常查询的,我想问的是,我user模型中并没有用到role模型,为何不导入会报这种错误呢
写回答
1回答
-
7七月
2019-03-02
不是,Sqlalchemy没有对表在哪个文件夹下有限制。Python一般都不太推荐这种约定大于配置的思想,都是以用户配置为中心的。
00
相似问题