gwift-book/adoc/models/admin.adoc

3.2 KiB
Raw Blame History

Modélisation et conception avancée

Dans ce chapitre, on va parler de plusieurs concepts utiles au développement rapide dune application. On parlera de modélisation, de migrations, dadministration auto-générée.

Modélisation

On va aborder la modélisation des objets en elle-même, qui sapparente à la conception de la base de données. Django utilise un modèle ORM - cest-à-dire que chaque objet peut sapparenter à une table SQL, mais en ajoutant une couche propre au paradigme orienté objet. Il sera ainsi possible de définir facilement des notions dhéritage (tout en restant dans une forme dhéritage simple), la possibilité dutiliser des propriétés spécifiques, des classes intermédiaires, …​

Lavantage de tout ceci est que tout reste au niveau du code. Si lon revient sur la méthodologie des douze facteurs, ce point concerne principalement la minimisation de la divergence entre les environnements dexécution. Déployer une nouvelle instance de lapplication pourra être réalisé directement à partir dune seule et même commande, dans la mesure où tout est embarqué au niveau du code.

Assez de blabla, on démarre !

Migrations

Les migrations (comprendre les "migrations du schéma de base de données") sont intimement liées à la représentation dun contexte fonctionnel. Lajout dune nouvelle information, dun nouveau champ ou dune nouvelle fonction saccompagne souvent/parfois de tables de données à mettre à jour, de champs étendre.

Administration

Woké. On va commencer par la partie à ne surtout (surtout !!) pas faire en premier dans un projet Django. Mais on va la faire quand même. La raison principale est que cette partie est tellement puissante et performante, quelle pourrait laisser penser quil est possible de réaliser une application complète rien quen configurant ladministration.

Cest faux.

Ladministration est une sorte de tour de contrôle évoluée; en se basant sur un modèle de données programmé et construit dynamiquement les formulaires associés. Elle joue avec les clés primaires, étrangères et les champs et types de champs par introspection. Elle peut être configurée, mais dans un périmètre relativement restreint; quoi que vous fassiez, il y a un moment où la courbe de paramétrage sera tellement ardue que vous aurez plus facile à développer ce nouveau concept en utilisant les autres concepts de Django.

Elle doit rester dans les mains dadministrateurs ou de gestionnaires, et dans leurs mains à eux uniquement. Il nest pas question de donner des droits à des utilisateurs lambda. Indépendamment de la manière dont vous allez lutiliser et la configurer, vous finirez malgré tout par devoir développer une "vraie" application, destinée aux utilisateurs classiques, et répondant à leurs besoins uniquement.

Une bonne idée consiste à développer ladministration dans un premier temps, en gardant en tête quil sera nécessaire de développer des concepts spécifiques. Dans cet objectif, ladministration est un outil exceptionel, qui permet de valider un modèle, créer des objets rapidement et vérifier les liens qui existent entre eux.