7

Django アプリに 3 つのモデル クラスがあります。

class Folder(models.Model):
  ...
  folder = models.ForeignKey('Folder',null=True,blank=True,related_name='folders')
  front_thumbnail_image = models.ForeignKey('Image',verbose_name='Front Thumbnail',null=True,blank=True,related_name='front_thumbnail_for_folders')
  middle_thumbnail_image = models.ForeignKey('Image',verbose_name='Middle Thumbnail',null=True,blank=True,related_name='middle_thumbnail_for_folders')
  back_thumbnail_image = models.ForeignKey('Image',verbose_name='Back Thumbnail',null=True,blank=True,related_name='back_thumbnail_for_folders')

class Image(models.Model):
  ...
  folder = models.ForeignKey(Folder,related_name='images',null=True)

class ImageRepresentation(models.Model):
  ...
  image = models.ForeignKey(Image, related_name="image_representations")

このモデルを考えると、管理サイトで を削除すると、それに関連付けられているも削除され、それを囲んでいる はそのままにImageなると予想されます。ImageRepresentationImageFolderImage

Folder管理サイトは、同封も削除されると言っています。望ましい動作を得るにはどうすればよいですか? カスケード削除ルールを調べましたが、何もうまくいかないようでした。

Folder(サムネイル画像のもの)に3つの外部キーを追加するように編集しました...私はそれらを完全に見落としていました(明らかに)。正直なところ、他の関係はありません。

4

2 に答える 2

6

を作成するForeignKeyと、親オブジェクトが削除されたときに削除されるものはon_deleteパラメータによって制御されます。

デフォルトでon_deleteは に設定されてmodels.CASCADEおり、親が削除されると子オブジェクトが削除されます。他の構成オプションはどれも、ここで報告している動作を作成できません。

ForeignkeyからFolderまでImageまたははありますImageRepresentationか? (あなたの場合はフォルダのサムネイル)

于 2012-12-06T16:42:59.240 に答える