Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Django post save sinal sendo chamado duas vezes apesar do uid


Ok, então eu mudei a importação para views.py (ou models.py e enquanto estava sendo importado apenas uma vez, estava sendo chamado duas vezes.

O problema era que o post_save signal estava sendo chamado quando o objeto foi criado e salvo. Não tenho ideia do porquê, então adicionei uma solução alternativa que agora 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 estava sendo chamado duas vezes porque usei .create(...) que é equivalente a __init__(...) e .save() .

Conclusão

dispatch_uid funciona e fazer importações únicas ainda é uma boa prática.