Projet

Général

Profil

Bug #5331

Protéger les modèles référencés, soit en empêchant la suppression des entrées qui références une autre entrée, soit en gérant la suppression avec un SET_NULL le modèle référant.

Ajouté par Mikaël Ates (de retour le 29 avril) il y a plus de 9 ans. Mis à jour il y a plus de 9 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
-
Version cible:
Début:
26 août 2014
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:

Description

Il s'agit par exemple du modèle ActType. Dès lors qu'il y a une entrée d'un Act qui pointe sur un ActType, cette entrée ne peut plus être supprimable, il doit être prossible d'utiliser on_delete=models.PROTECT sur la ForeignKey.
Dans ce cas, il faut également que cela ressorte au niveau de l'interface dans la gestion des ressources par exemple, soit en supprimant le bouton "supprimer" soit en affichant à message d'erreur lors de la tentative de suppression.
Il y a d'autres cas, par exemple pour le SchoolLevel où on veut autoriser les suppression des entrées de cette table mais pour éviter la suppression en cascade il faut mettre on_delete=models.SET_NULL sur la ForeginKey level sur le modèle SocialisationDuration.

Historique

#1

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a plus de 9 ans

  • Description mis à jour (diff)
#2

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a plus de 9 ans

  • Description mis à jour (diff)
#3

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a plus de 9 ans

  • Description mis à jour (diff)
#4

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a plus de 9 ans

Répondrait en partie à #4743.

#5

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a plus de 9 ans

  • Sujet changé de Pour certains modèles, il faudrait empêcher la suppression de ses instances dès lors qu'une autre instance pointe dessus à Protéger les modèles référencés, soit en empêchant la suppression des entrées qui références une autre entrée, soit en gérant la suppression avec un SET_NULL le modèle référant.
  • Description mis à jour (diff)
#6

Mis à jour par Benjamin Dauvergne il y a plus de 9 ans

Après avoir mis le on_delete=models.PROTECT, il faut attraper l'exception django.core.exception.ProtectedError dans la méthode form_valid() de la CBV, afficher une message d'erreur avec messages.error() puis retourner une redirection sur la page d'édition. Ça peut être fait génériquement dans la CBV de base qui gère les suppressions.

Formats disponibles : Atom PDF