8.3 模型关系

分析业务逻辑,用户赠送书籍,需要将用户赠送书籍的数据保存到数据库中。为此我们需要建立业务模型,并通过codeFirst的原则,反向生成数据库表

1.模型与模型关系

  • 首先我们需要一个用户User模型,来存储用户信息

  • 其次我们需要一个Book模型,来存储书籍的信息

  • 我们还需要一个Gift模型,来存储哪个用户想要赠送哪本书。从数据库的角度来看,用户和书籍是多对多的关系,多对多的关系需要第三章表。

    image.png

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?