Enregistrer/supprimer les signaux sont généralement favorables dans les situations où vous avez besoin de faire des changements qui ne sont pas totalement spécifiques au modèle en question, ou pourraient être appliquées à des modèles qui ont quelque chose en commun, ou peut être configuré pour une utilisation sur les modèles.
Une tâche courante dans substituée save
méthodes de génération automatique de limaces de certaines champ de texte dans un modèle. C'est un exemple de quelque chose qui, si vous avez besoin pour le mettre en oeuvre un certain nombre de modèles, pourrait bénéficier de l'aide d'un pre_save
de signal, où le gestionnaire de signal pourrait prendre le nom de la limace de domaine et le nom du champ à générer de la limace. Une fois que vous avez quelque chose comme ça, tout d'améliorer les fonctionnalités que vous mettez en place s'appliquent également à tous les modèles - par exemple, la recherche de la limace vous êtes sur le point d'ajouter pour le type de modèle en question, afin d'assurer l'unicité.
Réutilisable applications bénéficient souvent de l'utilisation de signaux - si les fonctionnalités qu'ils fournissent peuvent être appliqués à n'importe quel modèle, ils ont généralement (sauf si c'est inévitable) a remporté voulez pas que les utilisateurs ont la possibilité de modifier leurs modèles afin d'en bénéficier.
Avec django-mptt, par exemple, j'ai utilisé l' pre_save
signal de gérer un ensemble de champs qui décrivent une structure arborescente pour le modèle qui est sur le point d'être créé ou mis à jour et l' pre_delete
signal pour supprimer structure de l'arborescence des détails de l'objet supprimé et l'ensemble de ses sous-arborescence d'objets avant et ils sont supprimés. En raison de l'utilisation de signaux, les utilisateurs n'ont pas d'ajouter ou de modifier save
ou delete
méthodes sur leurs modèles à avoir cette gestion fait pour eux, ils ont juste à se laisser django-mptt savoir quels modèles ils le veulent à gérer.