Flask / SQLAlchemy关系

时间:2015-08-03 07:46:51

标签: python flask flask-sqlalchemy

所以我正在阅读有关数据库关系的内容,我似乎对此感到困惑

下面是Miguel Grinberg在blog

中的代码
from app import db

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    nickname = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    posts = db.relationship('Post', backref='author', lazy='dynamic')

    def __repr__(self):
        return '<User %r>' % (self.nickname)

class Post(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    body = db.Column(db.String(140))
    timestamp = db.Column(db.DateTime)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return '<Post %r>' % (self.body)
如果我的理解错误,

纠正我

posts = db.relationship('Post', backref='author', lazy='dynamic')

posts属性与Post模型有关系,但posts属性变为什么?一个领域?它能包含什么? backref是什么意思?它被定义为authorauthor中没有Models属性。

我查看了文档以及任何newb都会拥有它。我还是不太明白。

所以TL:DR

posts变成了什么?

backref做了什么?

1 个答案:

答案 0 :(得分:1)

posts是一个列表,您可以在SQLAlchemy中用作抽象来访问。 SQLAlchemy会在您使用它时将其转换为适当的SQL查询 (它表明有很多关系)

backref - 提示SQLAlchemy post中的属性表明它实际上属于特定的User。在这种情况下,这是一个错误(查看博客底部的评论),应该是user