Как поймать создание сигнала БД от Django - PullRequest
1 голос
/ 29 сентября 2011

Я работаю в проекте Django.У меня есть 1 файл sql postgresql, который нужно запустить только один раз после создания БД.Встроенный сигнал Django не совсем подходит для моего случая.Поэтому я пытаюсь написать собственный сигнал django, но я не уверен, как начать с этого случая.У кого-нибудь есть хороший гид.?:)

1 Ответ

1 голос
/ 29 сентября 2011

Документы Django по сигналам значительно улучшились, поэтому посмотрите, если вы этого еще не сделали. Процесс довольно прост.

Сначала создайте свой сигнал (providing_args позволяет вам указать аргументы, которые будут переданы при отправке вашего сигнала позже):

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

Во-вторых, создайте функцию получателя:

from django.dispatch import receiver

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

Наконец, отправьте свой сигнал куда угодно в своем коде (self, поскольку отправитель применим только в вашем классе модели. В противном случае просто передайте имя класса модели):

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