Spaces:
Sleeping
Sleeping
File size: 1,317 Bytes
46e055c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
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}>'
|