IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

django-simple-history3.1.1 Erreur après suppression en cascade


Sujet :

Django Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur d'études clinique
    Inscrit en
    septembre 2021
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur d'études clinique
    Secteur : Santé

    Informations forums :
    Inscription : septembre 2021
    Messages : 50
    Points : 38
    Points
    38
    Par défaut django-simple-history3.1.1 Erreur après suppression en cascade
    Bonjour à tous,

    Pour un projet Django sur lequel je travaille, j’utilise django-simple-history pour gérer l’historique de chacun de mes modèles. Tout fonctionne très bien lorsque je crée, modifie ou supprime un objet, la bibliothèque génère un <HistoricalObject> compilant certaines infos nécessaires au suivi. Mon problème est lorsque j’effectue une suppression en cascade.

    Par exemple, j’ai une table B qui hérite d’une table A. Quand je supprime un objet de ma table A, je lui ai demandé de supprimer aussi tous ses objets liés dans la table B. Django-simple-history génère un <HistoricalObject> pour l’objet de ma table A mais pour le B il est "corrompu" avec "erreur de formatage" parce que l’objet B supprimé possède en attribut l'objet A qui n’existe plus à ce moment et cela crée une erreur.
    Je ne peux même pas lire le <HistoricalObject> de B lorsque je l’interroge.

    L’erreur est :
    MyApp.models.tableA_object.DoesNotExist : tableA_object matching query does not exist.

    Je n’ai rien trouvé sur les forums à ce sujet et ça me bloque vraiment, je ne peux pas faire sans suppression en cascade et django-simple-history répond à tous mes besoins sauf celui-ci. J'ai du mal à croire que les développeurs n'aient pas pensé à gérer la suppression en cascade qui est assez classique quand on utilise Django..


    Quelques infos si besoin :

    Django 4.0.3
    django-simple-history 3.1.1
    MySql
    Python 3.9.7


    Merci de votre aide !

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    juillet 2006
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Alimentation

    Informations forums :
    Inscription : juillet 2006
    Messages : 3 233
    Points : 5 902
    Points
    5 902
    Par défaut
    Bonjour,

    J'ai du mal à voir pourquoi tu cherches à supprimer en CASCADE d'un côté et de l'autre. Mais une des solutions pourraient être de surcharger la méthode delete de ton modèle où se trouve l'erreur en là catchant.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur d'études clinique
    Inscrit en
    septembre 2021
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur d'études clinique
    Secteur : Santé

    Informations forums :
    Inscription : septembre 2021
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Bonjour,

    J'ai du mal à voir pourquoi tu cherches à supprimer en CASCADE d'un côté et de l'autre. Mais une des solutions pourraient être de surcharger la méthode delete de ton modèle où se trouve l'erreur en là catchant.
    Merci de ta réponse,

    La suppression en cascade se fait toute seule lorsque je supprime un objet d'une table parent. La suppression entraine la création d'un objet d'historique indiquant entre autre la date, l'utilisateur d'origine et les données sur l'objet supprimé.
    Mon problème est que visiblement django-simple-history ne peut créer ces objets de suivi que lorsque je crée, modifie ou supprime un objet à la fois et n'y arrive pas pour les objets "enfant" supprimés en cascade.

    Cas fonctionnel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     INDIVIDU 
     id
     nom            => Suppression Objet INDIVIDU   =>   django-simple-history génère un objet de suivi A dans la table HistoricalTableA
     prenom
    Cas problématique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     INDIVIDU    VACANCES
     id          objet_individu (CASCADE)
     nom         lieu visité                => Suppression Objet INDIVIDU   =>   Suppression auto Objet VACANCES associé  =>  django-simple-history génère un objet de suivi dans la table HistoricalIndividu
     prenom      date                                                                                                         django-simple-history génère un objet de suivi dans la table HistoricalVacances /!\ ERREUR ILLISIBLE, objet_individu INCONNU /!\
    (J’espère que c'est clair )

    Voilà ce que je comprend en tout cas de ce qui provoque cette erreur.

    Ce n'est pas pour un modèle uniquement c'est pour chaque fois que Django applique la suppression en cascade, alors je ne vois pas bien comment surcharger la méthode delete de mes models pourrait m'aider.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    juillet 2006
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Alimentation

    Informations forums :
    Inscription : juillet 2006
    Messages : 3 233
    Points : 5 902
    Points
    5 902
    Par défaut
    Ok je vois, pourtant j'ai l'impression que cette utilisation est gérée depuis un moment sur cette application -> voir ICI

    Ne connaissant pas ce module, il faut sans doute aller plus loin dans les docs pour comprendre quoi faire...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur d'études clinique
    Inscrit en
    septembre 2021
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur d'études clinique
    Secteur : Santé

    Informations forums :
    Inscription : septembre 2021
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Ok je vois, pourtant j'ai l'impression que cette utilisation est gérée depuis un moment sur cette application -> voir ICI

    Ne connaissant pas ce module, il faut sans doute aller plus loin dans les docs pour comprendre quoi faire...

    J'avais aussi trouvé cette info mais ici ils ne parlent que de suppression des objets de suivi en cascade, ceux générés par ce module, pas des objets eux même.


    Merci quand même pour ton aide, je vais relire la doc.

Discussions similaires

  1. [XL-2010] Message d'erreur fichier.xlam introuvable après suppression
    Par anedony dans le forum Excel
    Réponses: 2
    Dernier message: 09/05/2019, 11h29
  2. Réponses: 1
    Dernier message: 05/12/2011, 16h45
  3. Le Serveur renvoie la même erreur même après suppression du projet
    Par mesken dans le forum Glassfish et Payara
    Réponses: 0
    Dernier message: 01/04/2011, 08h19
  4. Erreur de LINK après suppression d'une CList
    Par LaDeveloppeuse dans le forum MFC
    Réponses: 5
    Dernier message: 06/10/2009, 14h21
  5. Erreur après suppression
    Par Herman dans le forum IHM
    Réponses: 1
    Dernier message: 30/05/2007, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo