2017-12-16 10 views
1

내가 원하는 다른 소유자에 강아지의 같은 이름이있을 수있는 경우 같은 사람이 같은 이름을 가진 개를 가지고 있지만 수 없다는 것입니다플라스크 관계 만 같은 사람에 대해 고유 한 열 이름

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 ']와 같은 이름이 있으며 애완 동물 테이블에 동일한 이름을 가진 애완 동물 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'

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

을 이제 당신이 사용하는 경우 :] < --- 페드로의 마스코트와 프랜 당신은 Pet 테이블에 UniqueConstraint을 추가 할 수 있습니다 같은 이름을 가지고 있지만 서로 다른 소유자

답변

2

을 가지고 있기 때문에 입원 테이블을 구성하기 위해, 그것을 시행 할 것이다. 전체 열의 튜플 (name, owner_id)은 고유합니다. 즉, name과 owner_id가 같은 두 개의 항목을 추가 할 수 없습니다.