这是我的模特:
class Item(db.Model):
id = db.Column(db.Integer, primary_key=True)
item_type_id = db.Column(db.Integer, db.ForeignKey('item_type.id'))
purchase_price = db.Column(db.Integer, index=True)
purchase_transaction_id = db.Column(db.Integer, db.ForeignKey('purchase_transaction.id'))
supplier_id = db.Column(db.Integer, db.ForeignKey('supplier.id'))
class ItemType(db.Model):
id = db.Column(db.Integer, primary_key=True)
item_type = db.Column(db.String(ITEM_TYPE_LENGTH), index=True, unique=True)
items = db.relationship('Item', backref='item_type', lazy='dynamic')
所以这就是我所做的:
>>> db.session.add(models.Item(item_type_id=170, purchase_price=111, purchase_transaction_id=1, supplier_id=1))
>>> db.session.commit()
我添加了一个新项item_type_id
是170,但item_type表只有id
直到20。如果我检查了我的数据库,item
成功添加,如果我做了ItemType.query.get(item.item_type_id)
之类的查询,将返回None
- 这意味着外键不存在
我已经阅读了sqlalchemy和sqlite中的文档,它们都应该有外键约束,我想知道它为什么不在我的工作