Я работаю над сценарием, который находит все сигналы Django
pre_save
и post_save
и комментарии, перезаписанные save
методами, поэтому программист знает обо всех сигналах, влияющих на рабочий процесс.
Например
Есть два приемника:
@receiver(pre_save, sender=MyModel)
def sig_mymodel_pre_save(instance, sender, **kwargs):
...
@receiver(post_save, sender=MyModel)
def sig_mymodel_post_save(instance, sender, created, **kwargs):
...
И модель MyModel :
class MyModel(..):
...
def save(self,*args,**kwargs):
...
super().save(...)
....
Я хочу, чтобы скрипт изменил MyModel код, чтобы он выглядел следующим образом:
class MyModel(..):
...
def save(self,*args,**kwargs):
...
# SIGNAL pre_save | myapp.models.sig_mymodel_pre_save
super().save(...)
# SIGNAL post_save | myapp.models.sig_mymodel_post_save
....
Итак, первое, что я собираюсь сделать, это перечислить все receivers
из post_save
и pre_save
сигналы:
def get_signals() -> {}:
result = {}
for signal in [pre_save, post_save]:
result[signal] = signal.receivers
return result
def comment_signals_to_save_methods():
for signal, receivers in get_receivers():
for receiver in receivers:
models = ???
И вот в чем проблема - я не могу получить models
для receiver
.Нет такого метода или атрибута.
Вы знаете, как это сделать?