2014-10-14 3 views
2
class Country(db.Model): 
    __tablename__ = 'countries' 
    id = db.Column(db.Integer, primary_key=True) 
    code = db.Column(db.Integer) 
    name_en = db.Column(db.String(100)) 
    user_country = db.relationship('User', backref='country') 
    company_country = db.relationship('Company', backref='country') 

이 예제에서는 테이블 이름을 무시하고 있습니다. 그렇다면 백 레퍼는 무엇이되어야합니까? tablename 또는 클래스 이름? 아니면 다른 것일 수 있습니까? 워드 프로세서역 참조 매개 변수를 정의하십시오.

:

역 참조는 backref의 이름은 일반적인 설명입니다 또한 xxxxx는 클래스 그래서

에 새로운 속성을 선언하는 간단한 방법입니다?

만약 내가 국가 테이블을 사용하는 두 개의 테이블이 있다면, 나의 예에서와 같이 두 개의 관계를 만들어야합니까? 절차는 다른 테이블의 각 참조에 의해 하나의 관계입니까?

답변

0

좋아요? 그러면 모델과 같은 형태로 user.country가됩니다.

class User(db.Model): 
    __tablename__ = 'users' 
    id = db.Column(db.Integer, primary_key=True) 
    country = db.relationship("Country", backref="users") 

class Country(db.Model): 
    __tablename__ = 'countries' 
    id = db.Column(db.Integer, primary_key=True) 
    user_country_id = db.Column(db.Integer, db.ForeignKey('users.id')) 
    user_country = db.relationship("User") 
+0

질문을 신중하게 읽지 않았다고 생각합니다. 감사. – anvd

1

이 예제를 참조 할 수 있습니다.

class Parent(Base): 
     __tablename__ = 'parent' 
     id = Column(Integer, primary_key=True) 
     children = relationship("Child", backref="parent") 

    class Child(Base): 
     __tablename__ = 'child' 
     id = Column(Integer, primary_key=True) 
     parent_id = Column(Integer, ForeignKey('parent.id')) 

가져 오기 부모 개체 부모

에 아이를 저장합니다. 당신이 따를 자식 객체를 통해 parend에 액세스하려면
c = Child(parent=p) 
db.session.add(c) 
db.session.commit() 

를 역 참조 사용하여 자식 객체의

p = Parent.query.get(1) 

스토어. 개체를 만듭니다.

child = Child() 

역 참조를 통한 액세스.

child.parent. 
0

혼란 스럽습니다. 또한 sqlalchemy의 문서는 길고 지루하고 이해하기 어렵게 만듭니다.

따라서 백 레퍼런스는 무엇입니까? tablename 또는 클래스 이름? 아니면 다른 것일 수 있습니까? 다른

아무것도는 역 참조 이름

그래서, 역 참조의 이름은 일반적인 설명이 될 수 있습니까?

예, 클래스의 속성 (즉, 테이블)을 동적으로 추가합니다. SQLAlchemy는 메타 클래스를 사용하기 때문에 Client 클래스의 인스턴스를 하나 이상 만들지 않으면 다른 클래스의 역 참조를 만드는 코드가 실행되지 않습니다. Subject.client에 의한 액세스 역 참조와 같은 자세한 내용은 backref-class-attribute을 참조하십시오.

국가 표를 사용하는 두 개의 표가있는 경우 예제와 같이 두 개의 관계를 만들어야합니까? 절차는 다른 테이블의 각 참조에 의해 하나의 관계입니까?

많은 관계를 원한다고 생각합니다. association-tableflask-doc 모두 도움이 될 수 있습니다.

희망 하시겠습니까?