Mysql
 sql >> Database >  >> RDS >> Mysql

Il segnale di Django dopo il salvataggio viene chiamato due volte nonostante l'uid

Ok, quindi ho spostato l'importazione in views.py (o models.py e mentre veniva importato solo una volta, veniva chiamato due volte.

Il problema era che il post_save il segnale veniva chiamato quando l'oggetto è stato creato e salvato. Non ho idea del perché, quindi ho aggiunto una soluzione alternativa che ora funziona

created = False

    #Workaround to signal being emitted twice on create and save
    if 'created' in kwargs:
        if kwargs['created']:
            created=True

    #If signal is from object creation, return
    if created:
        return

Modifica:

post_save è stato chiamato due volte perché ho usato .create(...) che equivale a __init__(...) e .save() .

Conclusione

dispatch_uid funziona e fare singole importazioni è ancora una buona pratica.