flask 多对多 数据库

longly1111 / 2024-10-21 / 原文

多对多建立方式

from .exts import db

from enum import Enum


class GenderEnum(Enum):
    MALE = '男'
    FEMALE = '女'


# 中间表:收藏表
collect = db.Table(
    'collects',
    db.Column('user_id', db.Integer, db.ForeignKey('tb_movie_users.id'), primary_key=True),
    db.Column('movie_id', db.Integer, db.ForeignKey('tb_movie.id'), primary_key=True),
)


# 电影用户模型
class MovieUserModel(db.Model):
    __tablename__ = "tb_movie_users"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(30), unique=True, index=True)
    age = db.Column(db.Integer, default=1)
    gender = db.Column(db.Enum(GenderEnum))


# 电影模型
class MovieModel(db.Model):
    __tablename__ = "tb_movie"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    movie_name = db.Column(db.String(30), unique=True, index=True)
    # 关联
    movie_users = db.relationship('MovieUserModel', backref='movies', lazy='dynamic', secondary=collect)