/ / django - 自分自身を削除し、自己参照エンティティを削除しない

djangoは自己参照のエンティティではなく自己を削除する - python、django、django-models

以下のサンプルモデルがあります。

class Note(models.Model):
text = models.TextField()
author = models.OneToOneField(User)
date_created = models.DateField(auto_now_add=True)
similar_note =  models.ForeignKey("self", related_name="similar_note", null=True, blank=True)

WinnerとLoserの2つのメモがあるとしましょう。

Loserには、勝者ノートを指すフィールドsimilar_noteがあります。

2つのうちのいずれかを削除すると、両方とも削除されます。これを防ぐにはどうすればよいですか。 私はdjangoの管理画面からも同じことをしてみました、それはそこからも起こります。

シモンズ:私はdjango 1.2を使っています。アップグレードするためのアドバイスをしないでください、制約が多すぎます。

回答:

回答№1は2

述べたように ここに

Djangoがオブジェクトを削除すると、デフォルトでは削除されますの動作をエミュレートします。 SQL制約ON DELETE CASCADE - つまり、任意のオブジェクト 削除されるオブジェクトを指す外部キーがあるものは それと共に削除されます。

このカスケード動作は、on_delete引数を使用してカスタマイズできます。 ForeignKey

チェックしてください on_delete モデルフィールドのパラメータ:

user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)