请问七月老师,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一般都不太推荐这种约定大于配置的思想,都是以用户配置为中心的。

0
0

Python Flask高级编程之RESTFul API前后端分离精讲

RESTFul+权限管理+token令牌+扩展flask=提升编程思维

2037 学习 · 359 问题

查看课程