Mariam-metho / app /models.py
kuro223's picture
jki
46e055c
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}>'