[afpy/django] django-admin - insert lors d'un update

Hicham El Mansouri elmansou at gmail.com
Mer 17 Mai 20:38:38 CEST 2017


Je suis d'accord avec Sébastien Corbin. Il faut passer par un signal. C'est
un bon pattern pour loose coupling.

Hicham



  <https://mailtrack.io/> Sent with Mailtrack
<https://mailtrack.io/install?source=signature&lang=en&referral=elmansou@gmail.com&idSignature=22>

2017-05-17 16:03 GMT+02:00 Sébastien Corbin <seb.corbin at gmail.com>:

> Hello Olivier,
>
> Bienvenue dans la communauté, je suis assez neuf également, et comme dans
> tout framework, j'ai pris
> pour réflexe de ne pas réinventer la roue et de réutiliser des packages
> maintenus et testés par la communauté.
>
> Pour t'aider dans cette recherche, je te conseille le site
> djangopackages.org qui regroupe en sujet et compare les différents
> packages.
> Pour ton cas, regarde du côté de https://djangopackages.org/
> grids/g/model-audit, ainsi tu trouveras django-reversion (celui-ci se
> sert des signaux django pour détecter les changements).
>
> Bon courage,
>
> --
> Sébastien Corbin
>
> On 17 May 2017, at 15:54, Olivier Lange <olange81 at gmail.com> wrote:
>
> Hello aux participants,
>
> Neo venu sur Django, et Python, après quelques années de dev sur php, j'ai
> enfin décidé de sauter le pas, et de m'attaquer à Python, et du coup
> django, qui me semble un projet mature.
>
> Vous risquez donc de me voir poser plein de questions, le temps de me
> former, et je vous remercie de votre patience ;)
>
> Première question, dont je n'arrive pas a trouver la réponse "simplement".
> J'ai activé django admin, crer une apps, avec son model, et activer la
> configuration des tables dans Django admin. Jusque la, tout va bien.
>
> Dans mon model, j'ai 4 tables, 2 principales, et 2 qui me servent à
> historiser mes modifications. J'ai en effet besoin de savoir qui (user) à
> modifier quoi (valeur avant/après) et quand (user) sur mes tables, pour des
> raisons de tracabilité.
>
> Une idée de comment je peux le faire? L'idée serait que lorsque j'ai un
> update sur la table, je puisse faire un insert sur une autre table. Je
> pourrais le faire via des trigger en Mysql, mais je me dit qu'il y a peut
> etre une solution directement avec Django?
>
> Mon model (qui doit parler de lui même):
>
> class Trunks(models.Model):
>     idTrunk = models.CharField(max_length=20,)
>     name = models.CharField(max_length=200)
>     ip_registrat = models.CharField(max_length=200)
>     mdp = models.CharField(max_length=50)
>     signal_type = models.CharField(max_length=50)
>     nbr_can_tot = models.IntegerField(default=0)
>     nbr_can_in = models.IntegerField(default=0)
>     nbr_can_out = models.IntegerField(default=0)
>     ndi = models.CharField(max_length=20)
>
>     def __str__(self):
>         return '%s (%s)' % (self.name, self.idTrunk)
>
> class Trunk_modif(models.Model):
>     date_modif = models.DateTimeField('date published')
>     user = models.CharField(max_length=20)
>     champ = models.CharField(max_length=20)
>     old_value = models.CharField(max_length=200)
>     new_value = models.CharField(max_length=200)
>     trunk_ref = models.ForeignKey(Trunks)
>
> class number(models.Model):
>     trunk_ref = models.ForeignKey(Trunks)
>     number = models.CharField(max_length=20)
>     insee = models.CharField(max_length=10)
>     redirect = models.CharField(max_length=20)
>
>     def __str__(self):
>         return '%s' % (self.number)
>
> class number_modif(models.Model):
>     date_modif = models.DateTimeField('date published')
>     user = models.CharField(max_length=20)
>     champ = models.CharField(max_length=20)
>     old_value = models.CharField(max_length=200)
>     new_value = models.CharField(max_length=200)
>     number_ref = models.ForeignKey(number)
>
>
>
> Merci.
>
> Olivier
>
> _______________________________________________
> django mailing list
> django at lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
>
>
> _______________________________________________
> django mailing list
> django at lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>



-- 
Hicham El Mansouri
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.afpy.org/pipermail/django/attachments/20170517/2639b996/attachment.html>


Plus d'informations sur la liste de diffusion django