Today we’re going to be talking about many to many relationships in Flask and connecting that with React, When and where to use them and how they should be declared depending on which actions that you want your database to be able to handle.
For starters, many to many relationships are joined together with join tables. Join tables are used to connect 2 tables together via foreign keys. There are 2 methods of doing so either connect the tables using db.Table() or create a class table. When trying
to conclude when to use db.Table() vs creating an entire new class comes into play if you are wanting a submittable attribute inside the Join table.
For Example,
``
Teacher_student = db.Table('teacher_students',
db.Column('teacher_id', db.Integer, db.ForeignKey('teachers.id'), primary_key=True),
db.Column('student_id', db.Integer, db.ForeignKey('students.id'), primary_key=True),
)
`
This join table's sole purpose is to connect the tables “teachers” and “students” to have a many to many relationship. As you can see besides foreign keys there are no other submittable attributes. If you are looking too add said attribute to your Join table
then it would be best to create a new class that holds your foreign keys and the attribute, such as,
`
Class Teacher_student(db.Model){
tablename = ‘teacher_students’
Id = db.Column(db.Integer, primary_key = True)
db.Column('teacher_id', db.Integer, db.ForeignKey('teachers.id')),
db.Column('student_id', db.Integer, db.ForeignKey('students.id')),
Attr = db.Column(db.String)
}
`
This example of a Join table has both the foreign keys and the attribute that allows a user to be able to submit some type of data that the database can connect back to both tables that share a many to many relationship.
Now, time to connect all this to our frontend! You should be somewhat familiar setting up your database and connecting that with your frontend already; but here we are strictly talking about setting up some kind of form that will need to be submitted by the user that will append data to our backend many to many table. For example you use Formik if you want speed that process up of creating a simple form just to test the difference in the above examples. If you are not aware of how to set up Formik in your environment
you can reference there official website here Formik:
Top comments (0)