from app import db from sqlalchemy import func # pour lower() class Matiere(db.Model): id = db.Column(db.Integer, primary_key=True) nom = db.Column(db.String(64), unique=True, nullable=False) sous_categories = db.relationship('SousCategorie', backref='matiere', lazy='dynamic', cascade="all, delete-orphan") def __repr__(self): return f'' class SousCategorie(db.Model): id = db.Column(db.Integer, primary_key=True) nom = db.Column(db.String(64), nullable=False) matiere_id = db.Column(db.Integer, db.ForeignKey('matiere.id'), nullable=False) textes = db.relationship('Texte', backref='sous_categorie', lazy='dynamic', cascade="all, delete-orphan") # Contrainte d'unicité composite __table_args__ = ( db.UniqueConstraint('nom', 'matiere_id', name='_nom_matiere_uc'), ) def __repr__(self): return f'' class Texte(db.Model): id = db.Column(db.Integer, primary_key=True) titre = db.Column(db.String(128), nullable=False) contenu = db.Column(db.Text, nullable=False) sous_categorie_id = db.Column(db.Integer, db.ForeignKey('sous_categorie.id'), nullable=False) auteur = db.Column(db.String(128), nullable=True) def __repr__(self): return f''