Тема остановилась на следующей проблеме (дабы не создавать лишней темы):
Есть код, где описана БД и есть связь один ко многим (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
почему это проходит??
т.е. эти данные записываются в БД, а ведь должна возвращаться ошибка.