IntegrityError al insertar datos en una tabla de asociación usando SQLAlchemy
Estoy tratando de insertar los datos del rol en esta tabla de asociación:
class Association(db.Model):
__tablename__ = 'associations'
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True)
team_id = db.Column(db.Integer, db.ForeignKey('teams.id'), primary_key=True)
role = db.Column(db.String)
user = db.relationship("User", back_populates="teams")
team = db.relationship("Team", back_populates="users")
Está vinculado a otras 2 tablas:
class User(db.Model, UserMixin):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String)
username = db.Column(db.String, nullable=False, unique=True, index=True)
password_hash = db.Column(db.String)
teams = db.relationship("Association", back_populates="user")
class Team(db.Model):
__tablename__ = 'teams'
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String)
player = db.Column(db.String)
users = db.relationship("Association", back_populates="team")
Sin embargo, cuando intento insertar el rol en la tabla de asociación:
t = Team.query.filter_by(id=team_name1_id).first()
a = Association(role=form.role.data)
a.user = User.query.filter_by(id=current_user.id).first()
t.users.append(a)
db.session.add(t)
db.session.commit()
Me sale este error:
IntegrityError: (generado como resultado del autoincrustamiento invocado por consulta; considere usar un bloque session.no_autoflush si este vaciado ocurre prematuramente) (sqlite3.IntegrityError) NO restricción NULL fallida: association.team_id [SQL: u'INSERT INTO association (user_id , rol) VALORES (?,?) '] [parámetros: (1, u'point guard')]
¿Sabes cómo puedo solucionarlo?