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&[email protected]&idSignature=22> 2017-05-17 16:03 GMT+02:00 Sébastien Corbin <[email protected]>: > 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 <[email protected]> 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 > [email protected] > http://lists.afpy.org/mailman/listinfo/django > > > > _______________________________________________ > django mailing list > [email protected] > http://lists.afpy.org/mailman/listinfo/django > -- Hicham El Mansouri
_______________________________________________ django mailing list [email protected] http://lists.afpy.org/mailman/listinfo/django
