2011-07-22 12 views
0

マイモデルのFKを削除するとき:ジャンゴ - メソッドの呼び出しは、管理者に

管理者で今
class Spectacle(models.Model): 
    title = models.CharField(max_length=100) 
    slug = models.SlugField(max_length=100 unique=False) 
    description = models.TextField() 

class SpectacleGallery(models.Model): 
    spectacle = models.ForeignKey(Spectacle) 
    image = models.ImageField(upload_to=upload_path_handler, max_length=255, help_text=_(u'tylko pliki z rozszerzeniem .jpg')) 
    image_thumb = models.CharField(max_length=255, editable=False, blank=True, null=True) 

    def delete(self, *args, **kwargs): 
     image_thumb_abs = settings.MEDIA_ROOT + str(self.image_thumb) 
     # try to delete thumb and image 
     try: 
      remove(image_thumb_abs) 
     except Exception: 
      pass 

     try: 
      self.image.delete() 
     except Exception: 
      pass 

     super(SpectacleGallery, self).delete(*args, **kwargs) # Call the "real" delete() method. 

     #try to delete dir 
     try: 
      removedirs(settings.SPECTACLE_GALLERY_UPLOAD_PATH + str(self.spectacle_id)) 
     except: 
      pass 

、私はSpectacleGalleryファイルから削除するときは、適切にディスクとDBから削除されています。問題は私がSpectacleを削除したいときです。削除ページでは、スペクタクルと関連するすべての画像を削除するかどうかを尋ねています。私は確認し、データベースからのすべてのレコードを削除します。残念ながら、SpectacleGalleryのファイルは削除されません.I PrintをSpectacleGalleryのdelete()メソッドに貼り付けます。何も表示されないので、私の質問は次のようになります: その方法で削除メソッドが呼び出されないのはなぜですか?

答えて

0

私の推測では、アイテムを一括して削除するときと似ています。 Djangoは、関連する各アイテムを調べ、モデル上でdeleteを呼び出すのではなく、より効率的な方法で削除を実行するために、異なる種類のクエリを実行します。

https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/

関連する問題