Flask 关联数据库
时间:2021-07-01 10:21:17
帮助过:15人阅读
models.py
class Role(db.Model):
__tablename__ =
‘roles‘
id = db.Column(db.Integer, primary_key=
True)
name = db.Column(db.String(64), unique=
True)
users = db.relationship(
‘User‘, backref=
‘role‘, lazy=
‘dynamic‘)
class User(UserMixin, db.Model):
__tablename__ =
‘users‘
id = db.Column(db.Integer, primary_key=
True)
email = db.Column(db.String(64), unique=True, index=
True)
username = db.Column(db.String(64), unique=True, index=
True)
password_hash = db.Column(db.String(128
))
role_id = db.Column(db.Integer, db.ForeignKey(
‘roles.id‘), nullable=
True)
ticketholiday_id = db.relationship(
‘Ticketholiday‘, backref=
‘user‘, lazy=
‘dynamic‘)
class Ticketholiday(db.Model):
__tablename__ =
‘ticketholidays‘
id = db.Column(db.Integer, primary_key=
True)
type =
db.Column(db.Integer)
about =
db.Column(db.Text)
user_id = db.Column(db.Integer, db.ForeignKey(
‘users.id‘), nullable=False)
注意你在Role数据库模型中的users,它并不是roles表中的字段,users = db.relationship(‘User‘, backref=‘role‘, lazy=‘dynamic‘),relationship的第一个参数表示这个关系的另一个数据库模型是哪个,这里是User,第二个参数backref表示给关联的数据库模型添加一个属性,这里是role。
也就是说,你可以通过User模型的role这个属性去访问Role模型,比如你在views.py中的查询结果,你可以通过user.role.name得到roles表中对应记录的name,user.role.id则得到roles表中对应记录的id
注意名称的大小写,一一对应
Flask 关联数据库
标签:关联 ring role uniq pre back name view ida