我在 Flask-sqlalchemy 模型中定义了以下多对多关系:
\n\nclass Course: \n ...\n modules = db.relationship('Module', secondary=course_modules,\n primaryjoin=(course_modules.c.course_id == id), \n secondaryjoin=(course_modules.c.module_id == id),\n backref=db.backref('courses', lazy='dynamic'), lazy='dynamic') \nRun Code Online (Sandbox Code Playgroud)\n\nmodule_course 表对象定义为:
\n\ncourse_modules=db.Table('course_modules',\n db.Column('course_id', db.Integer, db.ForeignKey('course.id')),\n db.Column('module_id', db.Integer, db.ForeignKey('module.id'))\n)\nRun Code Online (Sandbox Code Playgroud)\n\n当执行以下操作在此表中创建记录时,我收到 sqlalchemy.orm.exc.UnmappedColumnError:
\n\nmodule = module_service.get_by_id(1) #\xc2\xa0returns a Module instance\ncourse.modules = [module] #\xc2\xa0course being a Course instance\ncourse.modules.all()\n\nsqlalchemy.orm.exc.UnmappedColumnError: Can't execute sync rule for \nsource column 'course.id'; mapper 'Mapper|Module|module' does not map \nthis column. Try using an explicit `foreign_keys` collection which \ndoes not include destination column 'course_modules.module_id' …Run Code Online (Sandbox Code Playgroud)