Jak zapisać model, aby sygnały nie były wysyłane. (post_save i pre_save)Jak zapisać model bez wysyłania sygnału?
Odpowiedz
Jest to bit hack, ale można zrobić coś takiego:
korzystania unikalny identyfikator z filtrem, a następnie użyć metody aktualizacji queryset (który nie wyzwala sygnały)
user_id = 142187
User.objects.filter(id=user_id).update(name='tom')
Obecnie istnieje ticket w oczekiwaniu na decyzję projektową Django dla tej funkcji.
Zawarte w bilecie jest diff dla poprawki z proponowaną implementacją.
Ten ticket została oznaczona jako „WONTFIX”, ponieważ:
W skrócie, to brzmi jak ze względu na określony cel sygnałów, to załączony sygnał handler, który musi stać się bardziej inteligentny niż kod, który emituje sygnał . Wyłączenie sygnałów jest po prostu szybką naprawą, która zadziała, gdy dokładnie rozpozna, które procedury obsługi są dołączone do sygnału, i ukrywa podstawowy problem , umieszczając poprawkę w niewłaściwym miejscu.
Znakomita sztuczka :-) – nemesisdesign