我不确定我是否正确地为这个问题命名。我可以向任何表中添加足够好的唯一约束,但是在下面的情况下,我不确定该如何做:
class Branch(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(160))
#foreign key for 'branches' in Account class. access with Branch.account
account_id = db.Column(db.Integer, db.ForeignKey('account.id'))
class Account(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(160), unique=True)
branches = db.relationship('Branch', backref = 'account', lazy = 'dynamic')
因此,当我向“分支”表的“名称”列添加唯一约束时,无法将“相同名称”的分支添加到其他帐户。例如,西雅图可以是AccountA和AccountB的分支。
我想做的是应用一个仅在account.id相同时检查唯一性的约束。这可能吗?
感谢dirn,指出重复项,我添加了:
__table_args__ = (db.UniqueConstraint('account_id', 'name', name='_account_branch_uc'),
)
到我的Branch类,然后通过以下方式将其推送给Alembic:
def upgrade():
op.create_unique_constraint('_account_branch_uc', 'branch', ['name','account_id'])
不过,我会指出,由于我是通过alebmic手动添加此约束的,因此我不确定是否将其正确添加到模型中。我想我会找出最终何时擦除数据库并启动一个新数据库。
编辑
我已经滚动了一个新的数据库,并且__table_args__
从上面的数据库可以正常工作!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句