Есть код, где описана БД и есть связь один ко многим (foreign key) и не ясное до конца поведения скрипта:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' db = SQLAlchemy(app) class Role(db.Model): __tablename__= 'roles' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(45), unique=True, nullable=False) users = db.relationship('User', backref='role') def __repr__(self): return '<User %r>' % (self.name) class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(45), unique=True, nullable=False) # contents = db.relationship('Content', backref='author', lazy='dynamic') id_roles = db.Column(db.Integer, db.ForeignKey('roles.id'), nullable=False) db.create_all() q = Role(name='admins') db.session.add(q) db.session.commit() q = Role(name='users') db.session.add(q) db.session.commit() q = User(name='admin', id_roles=1) db.session.add(q) db.session.commit() q = User(name='user', id_roles=2) db.session.add(q) db.session.commit() q = User(name='user1', id_roles=222) db.session.add(q) db.session.commit() users = User.query.all() roles = Role.query.all() print('{}'.format('roles:')) for el in roles: print(el.id, el.name) print('{}'.format('users:')) for el in users: print(el.name, el.id_roles)
вот этот код, который делает то чего не могу понять, почему такое происходит:
id_roles=222
почему это проходит??
т.е. эти данные записываются в БД, а ведь должна возвращаться ошибка.