class Mission(db.Model): id = db.Column(db.Integer, primary_key=True) created_at = db.Column(db.DateTime, default=datetime.utcnow, index=True) name = db.Column(db.String(30)) unit = db.Column(db.String(10)) total_missions = db.Column(db.Integer) start_at = db.Column(db.DateTime, index=True) end_at = db.Column(db.DateTime, index=True) total_days = db.Column(db.Integer) # daily plan mission daily_missions = db.Column(db.Integer) # daily plan minutes daily_times = db.Column(db.Integer) total_times = db.Column(db.Integer) total_used_times = db.Column(db.Integer, default=0) # current completed mission completed_missions = db.Column(db.Integer, default=0) # is_completed: 1 yes, 0 no is_completed = db.Column(db.Integer, default=0) # status = db.Column(db.Integer, default=1) # (1 show, 0 hide) in index.html is_show = db.Column(db.Integer, default=1) summary = db.Column(db.TEXT, default='') plan_id = db.Column(db.Integer, db.ForeignKey('plan.id')) plan = db.relationship('Plan', back_populates='missions') logs = db.relationship('MissionLog', back_populates='mission')
class Plan(db.Model): id = db.Column(db.Integer, primary_key=True) created_at = db.Column(db.DateTime, default=datetime.utcnow, index=True) name = db.Column(db.String(30)) category_id = db.Column(db.Integer, db.ForeignKey('category.id')) category = db.relationship('Category', back_populates='plans') missions = db.relationship('Mission', back_populates='plan')
class Item(db.Model): id = db.Column(db.Integer, primary_key=True) body = db.Column(db.Text) done = db.Column(db.Boolean, default=False) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) author = db.relationship('User', back_populates='items')
class Item(db.Model): # print('----', '测试断点2') id = db.Column(db.Integer, primary_key=True) # 主键字段 body = db.Column(db.Text) # 主体字段 done = db.Column(db.Boolean, default=False) # 完成字段 author_id = db.Column(db.Integer, db.ForeignKey('user.id')) # author_id字段 # 通过relationship()函数, 同时通过设置back_populates参数的值为关系另一侧的关系属性名来连接对方。 author = db.relationship('User', back_populates='items') # author字段
class Item(db.Model): id = db.Column(db.Integer, primary_key=True) author_id = db.Column(db.Integer, db.ForeignKey('user.id')) title = db.Column(db.Text) sdate = db.Column(db.String()) stime = db.Column(db.String()) edate = db.Column(db.String()) etime = db.Column(db.String()) author = db.relationship('User', back_populates='items')
class MissionLog(db.Model): id = db.Column(db.Integer, primary_key=True) timestamp = db.Column(db.DateTime, default=datetime.utcnow, index=True) log_id = db.Column(db.Integer) completed_mission = db.Column(db.Integer) used_time = db.Column(db.Integer) mission_id = db.Column(db.Integer, db.ForeignKey('mission.id')) mission = db.relationship('Mission', back_populates='logs')
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, index=True) password_hash = db.Column(db.String(128)) locale = db.Column(db.String(20)) items = db.relationship('Item', back_populates='author', cascade='all') def set_password(self, password): self.password_hash = generate_password_hash(password) def validate_password(self, password): return check_password_hash(self.password_hash, password)
class Category(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(20)) plans = db.relationship('Plan', back_populates='category') def delete(self): default_category = Category.query.get(1) plans = self.plans[:] for plan in plans: plan.category = default_category db.session.delete(self) db.session.commit()
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, index=True) locale = db.Column(db.String(20)) password_hash = db.Column(db.String(128)) locale = db.Column(db.String(20)) items = db.relationship('Item', backref='author', cascade='all') @property def password(self): raise AttributeError('password is not a readable attribute.') @password.setter def password(self, password): self.password_hash = generate_password_hash(password) def validate_password(self, password): return check_password_hash(self.password_hash, password)
class User(db.Model, UserMixin): # print('----', '测试断点1') id = db.Column(db.Integer, primary_key=True) # 主键字段 username = db.Column(db.String(20), unique=True, index=True) # 用户字段 password_hash = db.Column(db.String(128)) # 密码散列值字段 locale = db.Column(db.String(20)) # locale字段,用来存储区域代码, # 通过使用db.relationship()关系函数将items定义为关系属性,返回多个记录,关系函数中的第一个参数为另一侧的模型名称, # 通过设置back_populates参数的值为关系另一侧的关系属性名来连接对方,cascade参数是设置级联操作,其值设为'all'表示多个级联值的组合 items = db.relationship('Item', back_populates='author', cascade='all') # 设置密码 def set_password(self, password): self.password_hash = generate_password_hash(password) # 同一密码生成不同的密码散列值 # 验证密码 def validate_password(self, password): return check_password_hash( self.password_hash, password) # 调用check_password_hash()函数检查密码散列值是否与设置的一致
class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, index=True) password_hash = db.Column(db.String(128)) items = db.relationship('Item', back_populates='author', cascade='all')