烧瓶关系,仅适用于同一个人的唯一列名称

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个变量,并且在列表框中使用多个变量时仅返回空白

jqGrid filterToolbar 仅适用于某些列

Android Apk 仅适用于 KivyMd 崩溃

用于生产和开发的烧瓶 postgresql sqlalchemy 配置

烧瓶:将UTC时间转换为用户的本地时间

Postgres distinct union 仅适用于特定列