Mam ForeignKey, który może być pusty w moim modelu, aby model luźne połączenie między modelami. Wygląda nieco inaczej:Nullable ForeignKeys i usuwanie odniesienia instancji modelu
class Message(models.Model):
sender = models.ForeignKey(User, null=True, blank=True)
sender_name = models.CharField(max_length=255)
Po zapisaniu nazwa nadawcy jest zapisywana w atrybucie nazwa_sektora. Teraz chcę móc usunąć instancję użytkownika przywołaną przez nadawcę i pozostawić wiadomość w miejscu.
Po wyjęciu z pudełka ten kod zawsze powoduje usunięcie wiadomości zaraz po usunięciu instancji użytkownika. Pomyślałem więc, że program obsługi sygnału byłby dobrym pomysłem.
def my_signal_handler(sender, instance, **kwargs):
instance.message_set.clear()
pre_delete.connect(my_signal_handler, sender=User)
Niestety nie jest to rozwiązanie. W jakiś sposób Django najpierw zbiera to, co chce usunąć, a następnie uruchamia program obsługi pre_delete.
Wszelkie pomysły? Gdzie jest węzeł w moim mózgu?
Dzięki za wyjaśnienie i wskazówki do kopania. –
Dokładna odpowiedź. –