Sygnały zapisywania / usuwania są ogólnie korzystne w sytuacjach, w których trzeba wprowadzić zmiany, które nie są całkowicie specyficzne dla danego modelu lub można je zastosować do modeli, które mają coś wspólnego lub można je skonfigurować do użycia w różnych modelach.
Jednym z typowych zadań w zastępowanych save
metodach jest automatyczne generowanie informacji o pracy z jakiegoś pola tekstowego w modelu. To jest przykład czegoś, co, jeśli trzeba by go zaimplementować dla wielu modeli, skorzystałoby na użyciu pre_save
sygnału, w którym program obsługi sygnału mógłby wziąć nazwę pola informacji o pracy i nazwę pola, z którego ma wygenerować informacje o pracy. Gdy już masz coś takiego, każda wprowadzona ulepszona funkcjonalność będzie miała również zastosowanie do wszystkich modeli - np. Wyszukanie ślimaka, który masz zamiar dodać dla danego typu modelu, aby zapewnić wyjątkowość.
Aplikacje wielokrotnego użytku często czerpią korzyści z wykorzystania sygnałów - jeśli dostarczaną przez nie funkcjonalność można zastosować do dowolnego modelu, generalnie (chyba że jest to nieuniknione) nie będą chcieli, aby użytkownicy musieli bezpośrednio modyfikować swoje modele, aby z nich skorzystać.
Z Django mptt , na przykład, użyłem pre_save
sygnału zarządzać zestaw pól opisujących strukturę drzewa dla modelu, który ma zamiar być tworzone lub aktualizowane i pre_delete
sygnał do usunięcia drzew szczegóły konstrukcji dla obiektu przed usunięciem i całej jego poddrzewo obiektów znajdujących się przed nim i są one usuwane. Ze względu na użycie sygnałów, użytkownicy nie muszą dodawać ani modyfikować save
ani delete
metod w swoich modelach, aby wykonać to zarządzanie, po prostu muszą poinformować django-mptt, którymi modelami chcą zarządzać.