What is wrong with my relationships in SQL Alchemy? What is wrong with my relationships in SQL Alchemy? database database

What is wrong with my relationships in SQL Alchemy?


This error:

Could not determine join condition between parent/child tables on relationship CurriculumVersion.enrollments 

means that SQLAlchemy could not find a proper column in Enrollments to use as the foreign key in the relationship.

You defined the foreign key, but you used an incorrect table name. Flask-SQLAlchemy converts CamelCase classes to camel_case when creating the table, so you need to change this:

class Enrollment(db.Model, AuthUser):    # ...    version_id = db.Column(db.Integer, db.ForeignKey('curriculumversion.id'))    #...

to this:

class Enrollment(db.Model, AuthUser):    # ...    version_id = db.Column(db.Integer, db.ForeignKey('curriculum_version.id'))    #...

Alternatively you can use the __tablename__ attribute to override the default naming convention used by Flask-SQLAlchemy.


Try to use primaryjoin in your CurriculumVersion class as follows:

Change

enrollments = db.relationship('Enrollment', backref='enrollment', lazy='dynamic')

to

enrollments = db.relationship('Enrollment', backref='enrollment', lazy='dynamic', primaryjoin="Enrollment.version_id==CurriculumVersion.id")

Note: You might need to do this for the other classes as well.