Ho bisogno di fare un salvataggio con un modello, ma ho bisogno di scollegare alcuni ricevitori dei segnali prima di salvarlo.Disconnettere i segnali per i modelli e riconnettersi in django
Voglio dire,
Ho un modello:
class MyModel(models.Model):
...
def pre_save_model(sender, instance, **kwargs):
...
pre_save.connect(pre_save_model, sender=MyModel)
e in un altro luogo nel codice ho bisogno di qualcosa di simile:
a = MyModel()
...
disconnect_signals_for_model(a)
a.save()
...
reconnect_signals_for_model(a)
perché ho bisogno in questo caso, salvare il modello senza eseguire la funzione pre_save_model.
Grande. Questa è la soluzione più elegante. È possibile riutilizzare il gestore del contesto in diverse parti del codice. –
Un piccolo avviso: 'weak = False' non è l'impostazione predefinita quando si collega un ricevitore a un segnale. – spg
'weak' è [deprecato] (https://docs.djangoproject.com/en/1.10/topics/signals/# disconnecting-signals) Inoltre, le persone dovrebbero essere consapevoli che disabilitare un segnale impedirà * tutte * le istanze di attivare il segnale, non solo il contesto corrente (cioè altri thread, poiché i segnali sembrano essere thread-safe) , come suggerito [qui] (http://stackoverflow.com/questions/577376/django-how-do-i-not-dispatch-a-signal#comment64533494_10881618) –