【发布时间】:2019-05-06 15:56:34
【问题描述】:
假设我有简单的 SQLAlchemy 映射:
class Parent(db.Model)
id = db.Column(db.Integer, primary_key=True)
children = db.relationship('Child', back_populates='parent')
class Child(db.Model)
id = db.Column(db.Integer, primary_key=True)
parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'), nullable=False)
parent = db.relationship('Parent', back_populates='children')
在这种形式中,它是一个One(Parent)-to-Many(Children)。
由于nullable 标志,每个Child 必须有一个Parent,否则会引发IntegrityError。 [注意默认不级联'deletes'或'orphan-deletes',确保当父级被删除时,其子级也不被删除,因此错误]
但是,当Parent 有零个孩子时,我想提出一个IntegrityError。
即:
- 禁止创建新的
Parent而不创建并指定至少一个Child。 - 禁止删除
Parentschildren集合中的最后一个Child。
在 Postgres(以及开发中的 SQLite 3)中有什么方法可以做到这一点?
【问题讨论】:
标签: python sqlalchemy one-to-many