Spaces:
Running
Running
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'<Matiere {self.nom}>' | |
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'<SousCategorie {self.nom}>' | |
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'<Texte {self.titre}>' | |