0

Googleでこれを見つける方法がよくわからず、検索してもどこにも導かれませんでした。

管理パネルで 1 つのエントリを削除すると、もう 1 つのエントリが自動的に削除されるように、2 つのモデルをどのように関連付けますか?

助けてくれてありがとう。

編集:例で更新されました。イベントで他の競技者を説明できるようにしたいと考えています。また、イベントと OneToOne の関係にある写真を主な競技者にする必要があります。そのため、主要な競技者が削除されたら、イベントも削除したいと考えています。残念ながら、Event に ForeignKey リレーションシップを追加することはできません。そうしないと、エラーが発生します。では、OneToOne 関係のためにこれを行う方法はありますか?

class Event(models.Model):
    competitors = models.ManyToManyField('Picture',null=True,blank=True)

class Picture(models.Model):
    competition = models.OneToOneField(Event) 
4

2 に答える 2

4

ジャンゴのドキュメントを引用:

Django がオブジェクトを削除するとき、デフォルトでは、SQL 制約 ON DELETE CASCADE の動作をエミュレートします。つまり、削除するオブジェクトを指す外部キーを持つオブジェクトはすべて削除されます。

次に、これがデフォルトの動作です。

詳細については、 on_deleteオプションを参照してください。

user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
The possible values for on_delete are found in django.db.models:

CASCADE: Cascade deletes; the default.
...
于 2012-12-29T22:16:08.757 に答える
1

次の 2 つのモデルがあるとします。

class ModelA(models.Model):
    name = models.CharField(max_length=30)

class ModelB(models.Model):
    abc = models.CharField(max_length=30)
    model_a = models.ForeignKey(ModelA)

それでは、いくつかの実例を見て​​みましょう:

modelAObj = ModelA.objects.create(name='aamir')
modelBObj = ModelB.objects.create(abc='cde', model_a=modelAObj)
modelAObj.delete() # this will also delete the modelBObj
于 2012-12-29T22:29:29.997 に答える