8.3 模型关系
分析业务逻辑,用户赠送书籍,需要将用户赠送书籍的数据保存到数据库中。为此我们需要建立业务模型,并通过codeFirst的原则,反向生成数据库表
1.模型与模型关系
首先我们需要一个用户User模型,来存储用户信息
其次我们需要一个Book模型,来存储书籍的信息
我们还需要一个Gift模型,来存储哪个用户想要赠送哪本书。从数据库的角度来看,用户和书籍是多对多的关系,多对多的关系需要第三章表。

2.编写建立模型代码
models/user.py
from sqlalchemy import Column
from sqlalchemy import Integer, Float
from sqlalchemy import String, Boolean
from app.models.base import db
class User(db.Model):
id = Column(Integer, primary_key=True)
nickname = Column(String(24), nullable=False)
phone_number = Column(String(18), unique=True)
email = Column(String(50), unique=True, nullable=False)
confirmed = Column(Boolean, default=False)
beans = Column(Float, default=0)
send_counter = Column(Integer, default=0)
receive_counter = Column(Integer, default=0)
wx_open_id = Column(String(50))
wx_name = Column(String(32))models/gift.py
3.自定义基类模型
每个表的信息,在删除的时候都不应该物理的从数据库里删除,而应该设置一个标志位,默认为0,如果删除了则置为1,这样可以搜索到历史的用户记录。
像标志位这样的参数,每个表里都有同样的属性,我们应该建立一个基类,来存储这些共有属性
base.py
Last updated
Was this helpful?