У меня есть ситуации, где, когда одна из моих моделей сохраненной MyModel
Я хочу проверить поле, и вызвать то же самое изменение в любой другой модели с тем же some_key.
Django, post_save recrusion сигнала. Как обойти сигнал обжига
код работает отлично, но его рекурсивно называют сигналы. В результате я теряю вызов CPU/DB/API. Я в основном хочу обходить сигналы во время .save().
Любые предложения?
class MyModel(models.Model):
#bah
some_field = #
some_key = #
#in package code __init__.py
@receiver(models_.post_save_for, sender=MyModel)
def my_model_post_processing(sender, **kwargs):
# do some unrelated logic...
logic = 'fun! '
#if something has changed... update any other field with the same id
cascade_update = MyModel.exclude(id=sender.id).filter(some_key=sender.some_key)
for c in cascade_update:
c.some_field = sender.some_field
c.save()
Это пугает меня (на случай, если что-то пойдет не так ...) ... но это сработает. – Nix
Что может пойти не так? Единственное, что работает между отключением и подключением - это сохранить, и если это не сработает, вы даже не будете здесь. –
Подсоединение его обратно может пойти не так ... Я думаю, что это подход, его просто попадает в очень страшную категорию. – Nix