Makina Blog
Présentation de django-tracking-fields
Suivi de modification d'objets Django
Présentation
Avoir un historique "de qui modifie quoi" est un besoin récurrent.
django-tracking-fields
permet de rajouter ce suivi sur n'importe quel champ de n'importe quel modèle.
L'application est disponible sur github et pypi.
Elle ajoute un décorateur `@track` permettant de spécifier les champs à surveiller. Le module `django-cuser` est requis pour enregistrer l'utilisateur ayant fait la modification. Les modifications sont ensuite visibles par défaut depuis l'administration de Django.
La technique
Les signaux sont utilisés pour initialiser et enregistrer les changements de valeurs. À l'initialisation d'une instance, les valeurs des champs sont stockées. À la sauvegarde de cette même instance, les valeurs des champs sont comparées aux valeurs stockées et un évènement de modification est enregistré pour les champs dont la valeur diffère.
Là où la plupart des modules similaires stockent l'intégralité de l'instance afin de pouvoir y revenir plus tard, django-tracking-fields ne stocke que les modifications. Cette simplicité permet de garder un code maintenable facilement dans la durée et fonctionnant avec un maximum de versions de Django.
N'hésitez pas à consulter nos Réalisation Django.
Formations associées
Formations Django
Formation Django avancé
À distance (FOAD) Du 9 au 13 décembre 2024
Voir la formationFormations Django
Formation Django REST Framework
À distance (FOAD) Du 9 au 13 juin 2025
Voir la formationActualités en lien
Créer un tag d'inclusion avec paramètres dans Django
La bibliothèque de tags interne permet d'enregistrer des tags avec paramètres ou des tags d'inclusion de template, voici comment faire les deux en même temps.
Presentation of the latest Django CMS: Wagtail
Wagtail is a quite recent Django CMS. However, its young age does not keep it from having a lot of features, which we will discover in this post.
Wagtail : Comment écrire les templates (partie 3)
Il n'y a pas de vue à proprement parlé dans Wagtail. Tout est en fait géré dans le modèle. Nous pouvons ainsi modifier le template utilisé ou étendre son contexte en fonction du type de contenu sans problème.