烧瓶关系,仅适用于同一个人的唯一列名称
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了烧瓶关系,仅适用于同一个人的唯一列名称相关的知识,希望对你有一定的参考价值。
我想要的是同一个人不能拥有一个同名的狗,但如果在其他所有者中可以有一个同名的狗
class Person(db.Model):
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(20))
pets = db.relationship('Pet',backref='person',lazy='dynamic')
class Pet(db.Model):
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(20),unique=True)
owner_id = db.Column(db.Integer,db.ForeignKey('person.id'))
例如在Person表中有这些名称['fran','larson','pedro'],并且想法是在Pets表中可能有3只同名的宠物,但从不将多于一只的宠物与例如,一个人的名字相同
pets_fran = ['name_pet_1','name_pet_2'] <---正确
pets_larson = ['name_pet_4','name_pet5','name_pet_4'] <---拒绝这个,因为你有两只同名的宠物
pets_pedro = ['name_pet_1','name_pet_6','name_pet_7'] <--- pedro和fran的吉祥物有相同的名字,但因为有不同的所有者而被录取
答案
你可以在UniqueConstraint
表中添加一个Pet
:
class Pet(db.Model):
id = db.Column(db.Integer,primary_key=True)
name = db.Column(db.String(20),unique=True)
owner_id = db.Column(db.Integer,db.ForeignKey('person.id'))
__table_args__ = (db.UniqueConstraint('owner_id', 'name'),)
所以现在如果你使用它来构造表,它将(尝试)强制整个列中的元组(name,owner_id)是唯一的。换句话说,无法添加name和owner_id相同的两个条目。
以上是关于烧瓶关系,仅适用于同一个人的唯一列名称的主要内容,如果未能解决你的问题,请参考以下文章
我的(Vba)代码仅适用于列表中的1个变量,并且在列表框中使用多个变量时仅返回空白