У меня есть функция, которая является приемником сигналов от всех моделей системы. Я хочу, чтобы сигналы прерывались, когда я выполняю заполнение дампа базы данных с помощью команды Django , поэтому он не будет вызываться при создании экземпляров модели с помощью этого среднего значения.
Это моя функция приемника:
@receiver(post_save)
def trigger_payment(sender, instance=None, created=False, **kwargs):
from TreasuryManagementApp.models import PaymentApplicationTrigger
if instance.__class__.__name__ not in trigger_models:
return
strategies = EventStrategies()
application_triggers = PaymentApplicationTrigger.objects.filter(event_name__in=trigger_models[instance.__class__.__name__]['event_names'])
for application_trigger in application_triggers:
strategies.execute(application_trigger, instance)
А это код моей команды, в которой я пытаюсь отключить функцию от сигналов:
class Command(BaseCommand):
help = _("""Run this command to import partners and operators from plane files""")
def execute(self, *args, **kwargs):
from TreasuryManagementApp.controllers import trigger_payment
Signal.disconnect(trigger_payment)
self.import_partners()
self.import_operators()
self.import_dead_ones()
Проблема в том, что этот вызов Signals.disconnect()
вызывает следующее исключение:
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/Users/hugovillalobos/Documents/Code/TaxistasProject/TaxistasVenv/lib/python3.7/site-packages/django/core/managemen
t/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/Users/hugovillalobos/Documents/Code/TaxistasProject/TaxistasVenv/lib/python3.7/site-packages/django/core/managemen
t/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/hugovillalobos/Documents/Code/TaxistasProject/TaxistasVenv/lib/python3.7/site-packages/django/core/managemen
t/base.py", line 316, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/hugovillalobos/Documents/Code/TaxistasProject/taxistas/GeneralApp/management/commands/startdatabase.py", lin
e 21, in execute
call_command('import_people')
File "/Users/hugovillalobos/Documents/Code/TaxistasProject/TaxistasVenv/lib/python3.7/site-packages/django/core/managemen
t/__init__.py", line 148, in call_command
return command.execute(*args, **defaults)
File "/Users/hugovillalobos/Documents/Code/TaxistasProject/taxistas/GeneralApp/management/commands/import_people.py", lin
e 433, in execute
Signal.disconnect(trigger_payment)
File "/Users/hugovillalobos/Documents/Code/TaxistasProject/TaxistasVenv/lib/python3.7/site-packages/django/dispatch/dispa
tcher.py", line 138, in disconnect
with self.lock:
AttributeError: 'function' object has no attribute 'lock'