Kaydetme / silme sinyalleri, söz konusu modele tamamen özel olmayan değişiklikler yapmanız gereken veya ortak bir şeye sahip olan veya modellerde kullanılmak üzere yapılandırılabilen modellere uygulanabilecek durumlarda genellikle uygundur.
Geçersiz kılınan save
yöntemlerde yaygın bir görev , bir modeldeki bazı metin alanlarından otomatik olarak sümüklü böcek üretmektir. Bu, bir dizi model için uygulamanız gerekirse pre_save
, sinyal işleyicinin bilgi bilgisini oluşturmak için bilgi alanı adını ve alanın adını alabileceği bir sinyal kullanmaktan fayda sağlayacak bir şeye örnek . Böyle bir şeyi yerine getirdikten sonra, yerleştirdiğiniz gelişmiş işlevler de tüm modeller için geçerli olacaktır - örneğin, benzersizliği sağlamak için, söz konusu model türü için eklemek üzere olduğunuz kurguya bakmak.
Yeniden kullanılabilir uygulamalar genellikle sinyal kullanımından yararlanır - sağladıkları işlevsellik herhangi bir modele uygulanabiliyorsa, genellikle (kaçınılmaz olmadığı sürece) kullanıcıların bundan yararlanmak için modellerini doğrudan değiştirmesini istemezler.
Örneğin django-mptt ile , pre_save
sinyali, oluşturulmak veya güncellenmek üzere olan model için bir ağaç yapısını ve pre_delete
silinen nesne ve tümünün ağaç yapısı ayrıntılarını kaldırmak için bir alan kümesini yönetmek için kullandım. kendisinden önceki nesnelerin alt ağacı ve silinirler. Sinyallerin kullanımından dolayı, kullanıcılar bu yönetimi kendileri için yaptırmak için modellerine yöntem save
veya delete
yöntem eklemek veya değiştirmek zorunda kalmazlar, sadece django-mptt'nin hangi modelleri yönetmesini istediklerini bilmesini sağlamaları gerekir.