Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';我不知道如何链接多个嵌套多对多关系_Python_Flask_Flask Sqlalchemy - Fatal编程技术网

Python Can';我不知道如何链接多个嵌套多对多关系

Python Can';我不知道如何链接多个嵌套多对多关系,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,我正在设置一个用户身份验证模块来指定三个角色:“r”、“w”、“x”,但是我不知道如何链接网站的所有子组件。该网站有五个级别:1-多个组织2-每个组织有多个项目3-每个项目有多个模块。用户权限应链接到组织项目的模块 这是使用flask sqlalchmey和flask migrate。我已经阅读了flask sqlalchemy和sqlalchemy.com文档,发现关联表可能是解决问题的方法。但我被困在这里 class Hospital(db.Model): __tablename_

我正在设置一个用户身份验证模块来指定三个角色:“r”、“w”、“x”,但是我不知道如何链接网站的所有子组件。该网站有五个级别:1-多个组织2-每个组织有多个项目3-每个项目有多个模块。用户权限应链接到组织项目的模块

这是使用flask sqlalchmey和flask migrate。我已经阅读了flask sqlalchemy和sqlalchemy.com文档,发现关联表可能是解决问题的方法。但我被困在这里

class Hospital(db.Model):

    __tablename__ = 'hospitals'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(), unique=True)


class Project(db.Model):

    __tablename__ = 'projects'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(), unique=True)


class Module(db.Model):

    __tablename__ = 'modules'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(), unique=True)


class HospitalProject(db.Model):

    __tablename__ = 'hospital_projects'
    id = db.Column(db.Integer(), primary_key=True)
    hospital_id = db.Column(db.Integer, db.ForeignKey('hospitals.id'), primary_key=True)
    project_id = db.Column(db.Integer, db.ForeignKey('projects.id'), primary_key=True)
    hospital = db.relationship('Hospital', backref='projects')
    project = db.relationship('Project', backref='hospitals')


class HospitalProjectModules(db.Model):

    __tablename__ = 'hospital_project_modules'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(), unique=True)
    hospital_project_id = db.Column(db.Integer, db.ForeignKey('hospital_projects.id'), primary_key=True)
    module_id = db.Column(db.Integer, db.ForeignKey('modules.id'), primary_key=True)
    hospital_project = db.relationship('HospitalProject', backref='modules')
    module = db.relationship('Module', backref='hospital_projects')


class Role(db.Model):

    __tablename__ = 'roles'
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(), unique=True)


class HospitalProjectModulesUserRoles(db.Model):

    __tablename__ = 'hospital_project_modules_user_roles'
    id = db.Column(db.Integer(), primary_key=True)
    hospital_project_module_id = db.Column(db.Integer, db.ForeignKey('hospital_project_modules.id'), primary_key=True)
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'), primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True)
    hospital_project_module = db.relationship('HospitalProjectModules', backref='User_Roles')
    user = db.relationship('User', backref='hospital_project_module_roles')
    role = db.relationship('Role', backref='hospital_project_module_users')
我遇到了这个错误。我知道这是因为hospital_项目没有唯一标识符,但我不知道如何解决它

sqlalchemy.exc.ProgrammingError:(psycopg2.errors.InvalidForeignKey)没有唯一约束匹配的给定键 参考表“医院/大学项目”


在所有外键引用列上都有PrimaryKey约束。 删除这些约束,因为它们是不必要的,因为您已将每个表设置为具有自己的“id”字段作为主键。 基本上,在上面的代码中,每个表都应该只有一个PrimaryKey列

e、 g。
hospital\u project\u id=db.Column(db.Integer,db.ForeignKey('hospital\u projects.id'),primary\u key=True)
变成
hospital\u project\u id=db.Column(db.Integer,db.ForeignKey('hospital\u projects.id'))

[SQL:
CREATE TABLE hospital_project_modules (
        id INTEGER NOT NULL,
        name VARCHAR,
        hospital_project_id INTEGER NOT NULL,
        module_id INTEGER NOT NULL,
        PRIMARY KEY (id, hospital_project_id, module_id),
        FOREIGN KEY(hospital_project_id) REFERENCES hospital_projects (id),
        FOREIGN KEY(module_id) REFERENCES modules (id),
        UNIQUE (name)

app/models.py61:51
LFUTF-8Pythongit+
DAMPublishGitHubGit (8)2 updates