gpt4 book ai didi

python - Flask 关系,仅同一个人的唯一列名

转载 作者:行者123 更新时间:2023-12-01 02:22:20 25 4
gpt4 key购买 nike

我想要的是同一个人不能养同名的狗,但其他主人是否可以有同名的狗

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的吉祥物同名但因主人不同而被承认

最佳答案

您可以添加UniqueConstraintPet 表:

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'))

<b>__table_args__ = (db.UniqueConstraint('owner_id', 'name'),)</b>

现在,如果您使用它来构造表,它将(尝试)强制整个列中的元组(名称,owner_id)是唯一的。换句话说,不能添加两个名称和owner_id 相同的条目。

关于python - Flask 关系,仅同一个人的唯一列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47847094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com