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

Olivier Lange olange81 at gmail.com
Mer 17 Mai 15:54:05 CEST 2017


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
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.afpy.org/pipermail/django/attachments/20170517/882102bb/attachment.html>


Plus d'informations sur la liste de diffusion django