sql >> Base de Datos >  >> RDS >> Mysql

La señal de guardado posterior de Django recibe una llamada dos veces a pesar de uid

Bien, moví la importación a views.py (o models.py y mientras se importaba solo una vez, se llamaba dos veces.

El problema era que post_save se estaba llamando a la señal cuando el objeto se creó y se guardó. No tengo idea de por qué, así que agregué una solución que ahora funciona

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

Editar:

post_save Me llamaron dos veces porque usé .create(...) que es equivalente a __init__(...) y .save() .

Conclusión

dispatch_uid funciona y hacer importaciones individuales sigue siendo una buena práctica.