0

나는 응용 프로그램과 같은 블로그를 만들고 있으며 편집 가능한 태그가있는 기사가 필요하며 태그 삭제도 기사의 변경 사항을 반영합니다. Flask-SQLAlchemy와 PostgresSQL을 사용하고 있습니다.편집 가능한 태그가있는 기사가있는 사이트의 스키마 결정 중입니까?

많은 검색을 시도했지만 아무 것도 찾을 수 없었으며 문서에 나온 내용을 따르지 않았습니다. (http://pythonhosted.org/Flask-SQLAlchemy/models.html#many-to-many-relationships)

tags = db.Table('tags', 
    db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')), 
    db.Column('page_id', db.Integer, db.ForeignKey('page.id')) 
) 

class Page(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    tags = db.relationship('Tag', secondary=tags, 
     backref=db.backref('pages', lazy='dynamic')) 

class Tag(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 

그러나 이것은 내가 다 대다 관계를 사용해야합니다 생각하는 날 리드. 누군가 설명해 주시겠습니까? 감사!

답변

0

원본 코드가 정확합니다. 비슷한 것이 작동합니다. 이

db = SQLAlchemy(app) 

tags = db.Table('tags', 
    db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')), 
    db.Column('post_id', db.Integer, db.ForeignKey('post.id')) 
) 

class Post(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    title = db.Column(db.String(100), index=True, unique=True) 
    body = db.Column(db.String(500), index=True) 
    tags = db.relationship('Tag', secondary=tags, 
     backref=db.backref('posts', lazy='dynamic')) 

    def __repr__(self): 
     return '<Post %r %r>' % (self.title, self.tags) 

class Tag(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(50), index=True, unique=True) 

    def __repr__(self): 
     return '<Tag %r>' % (self.name) 

models.py 될 경우 당신은 models.Post.tags 으로 태그에 액세스 할 수 있으며이 그래서 쉽게 사용할 수있는 유형 models.Tag의 모든 요소를 ​​포함하는 유형 List이 될 것입니다.

관련 문제