2012-06-18 9 views
11

Używam sygnału post_save Django do wysyłania wiadomości e-mail do użytkowników po dodaniu do witryny nowego artykułu . Jednak użytkownicy nadal otrzymują nowe wiadomości e-mail za każdym razem, gdy używam metody save() dla już utworzonych artykułów. Jak można odbierać e-maile tylko po dodaniu nowego wpisu?Sygnały Django tylko dla nowego wpisu

góry dzięki

Odpowiedz

28

Sygnał post_save otrzymuje boolowski argument created, który wskazuje, czy został zapisany zapisany instance.

def my_callback(sender, **kwargs): 
    if kwargs['created']: 
     print('Instance is new') 
+0

Wielkie dzięki! to działało jak urok. –

0

Sprawdzenie instance.id jest miłym sposobem na określenie, czy instancja jest „nowy”. Działa to tylko wtedy, gdy używasz identyfikatorów wygenerowanych automatycznie przez twoją bazę danych.

+0

Nie zadziała na sygnale post_save IIRC - do tego czasu instancja ma już identyfikator. –

Powiązane problemy