2011-09-29 7 views
1

Je travaille dans le projet django. J'ai 1 fichier SQL postgresql qui ne doit être exécuté qu'une fois après la création de DB. Signal intégré django pas tout à fait avec mon cas. J'essaie donc d'écrire un signal django personnalisé mais je ne sais pas trop comment commencer avec ce cas. Est-ce que quelqu'un a un bon guide. ? :)Comment faire pour créer un signal db de django

+0

Le crochet de données SQL initial ne fonctionne pas pour vous? –

+0

Je ne suis pas sûr de cette approche. Mais j'en ai besoin seulement une fois. Cela fonctionnera-t-il comme je l'espère? – vernomcrp

Répondre

1

Les Django docs on signals se sont considérablement améliorées, alors jetez un oeil là-bas si vous ne l'avez pas déjà fait. Le processus est assez simple.

d'abord créer votre signal (providing_args vous permet de spécifier les arguments qui sont transmis lorsque vous envoyez le signal plus tard):

import django.dispatch 
my_signal = django.dispatch.Signal(providing_args=["first_arg", "second_arg"]) 

En second lieu, créer une fonction de récepteur:

from django.dispatch import receiver 

@receiver(my_signal) 
def my_callback(sender, first_arg, second_arg, **kwargs): 
    # do something 

Enfin, envoyez votre signal où vous voulez dans votre code (self car l'expéditeur n'est applicable que dans votre classe de modèle, sinon transmettez simplement le nom de la classe du modèle):

my_signal.send(sender=self, first_arg='foo', second_arg='bar') 
+0

Puisqu'il a un cas d'utilisation unique, vous devez également lui indiquer la documentation sur la création d'une commande afin qu'il puisse générer le signal à la demande. –

Questions connexes