私はモデル間で疎結合をモデル化するために私のモデルではnullになることができるForeignKeyを持っています。Nullable ForeignKeysと参照されたモデルインスタンスを削除する
class Message(models.Model):
sender = models.ForeignKey(User, null=True, blank=True)
sender_name = models.CharField(max_length=255)
保存時に、送信者名がsender_name属性に書き込まれます。今、私は送信者によって参照されたUserインスタンスを削除し、そのメッセージをそのまま残したいと考えています。
ユーザーのインスタンスを削除するとすぐに、このコードでメッセージが削除されます。だから私はシグナルハンドラが良い考えだと思った。
def my_signal_handler(sender, instance, **kwargs):
instance.message_set.clear()
pre_delete.connect(my_signal_handler, sender=User)
悲しいことに、決して解決策ではありません。どうにかして、Djangoはまず削除したいものを集め、pre_deleteハンドラを起動します。
アイデア?私の脳の結び目はどこですか?
説明していただきありがとうございます。 –
徹底的な答え。 –