2012-01-10 8 views
5

Mam swoje modele w poszczególnych plików:Post_save otrzymał dwukrotnie dla jednego Zapisz nawet przy użyciu dispatch_uid

models 
\ 
|__init__.py 
|event.py 
|a_thing.py 
|... 

W __init__.py importować każdego modelu, a potem ustawić obsługi sygnału.

Dla modelu Event potrzebuję jakiejś obsługi post_save.

Jest to okrojona wersja __init__.py:

from django.db.models.signals import post_save 
from django.dispatch import receiver 

from core.models.event import Event 

# Event 
@receiver(post_save, sender = Event) 
def event_post_save(sender, dispatch_uid = 'nope', **kwargs): 
    print kwargs.get('created') 
    print '------' 

Ilekroć zapisać Event za pośrednictwem konsoli komunikat w post_save jest drukowany raz, ale gdy używam interfejsu administratora robi wydrukowane dwukrotnie. Może to być spowodowane tym, że importuję również modele wewnątrz admin.py.

Czy istnieje sposób obejścia tego problemu, aby można było zapisywać obiekty zdarzeń z poziomu interfejsu administratora bez dwukrotnego odpalenia obiektu post_save?

Odpowiedz

0

udało mi się naprawić mój przesunięcie magazynowe do wyświetlenia __init__.py zamiast modele __init__.py

4

To pewnie z Django/Python importowej głupoty sygnał. Potrzebujesz tak, jak masz, ale myślę, że musi to być argument dla dekoratora, a nie samego handlarza.

Powiązane problemy