2015-03-28 2 views
0

J'ai créé un champ d'image personnalisé pour Django qui crée automatiquement des vignettes et fait d'autres choses.Connexion automatique des signaux aux champs de modèle Django personnalisés

from django.db.models.fields.files import ImageFieldFile 

class ImageWithThumbsFieldFile(ImageFieldFile): 
    def __init__(self, *args, **kwargs): 
     ... 

Maintenant, je voudrais automatiquement connecter un signal post_delete chaque fois qu'un tel champ est défini dans un modèle. Je sais comment connecter manuellement un signal post_delete lorsque le modèle est défini. Mais y-a-t-il un moyen de le faire automatiquement chaque fois que le champ personnalisé est utilisé?

Répondre

1

Vous pouvez le faire dans la méthode contribute_to_class():

class ImageWithThumbsFieldFile(ImageFieldFile): 
    ... 
    def contribute_to_class(self, cls, name, **kwargs): 
     super(ImageWithThumbsFieldFile, self).contribute_to_class(
                cls, name, **kwargs) 
     post_delete.connect(on_delete_callback, sender=cls) 
+0

Parfait! J'ai pensé qu'il devait y avoir quelque chose de simple comme ça, mais je ne pouvais pas le trouver. –