Вот мои модели:
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, они оба должны иметь ограничение внешнего ключа, интересно, почему это не работает в моем