#django #django-models #django-admin
#django #django-модели #django-admin
Вопрос:
Я работаю в проекте django. У меня есть 1 SQL-файл postgresql, который нужно запускать только один раз после создания БД. Встроенный сигнал django не совсем подходит для моего случая. Итак, я пытаюсь написать пользовательский сигнал django, но я не уверен, как начать с этого случая. У кого-нибудь есть хорошее руководство. ? 🙂
Комментарии:
1. Не работает ли у вас начальный перехват данных SQL?
2. Я не уверен в этом подходе. Но мне нужно, чтобы он запускался только один раз. Будет ли это работать так, как я ожидаю?
Ответ №1:
Документы 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
поскольку sender применим только в вашем классе модели. В противном случае просто передайте имя класса модели):
my_signal.send(sender=self, first_arg='foo', second_arg='bar')
Комментарии:
1. Поскольку у него есть одноразовый вариант использования, вы также должны указать ему на документацию по созданию команды, чтобы он мог генерировать сигнал по требованию.