2013-05-17 21 views
0

models.py當我刪除的模型,我怎樣才能刪除內聯數據和上傳文件

class Issue(models.Model): 
     issueId = models.AutoField(primary_key=True) 
     title = models.CharField(max_length = 20) 
     year = models.IntegerField() 
     issueDate = models.DateField() 

    class Preview(models.Model): 
     issueId = models.ForeignKey(Issue); 
     previewPath = models.FileField(upload_to='./upload/magazine_sample') 

admin.py

class PreviewInline(object): 
     model = Preview 
     extra = 1 
     style = 'accordion' 
     max_num = 1 

    class IssueAdmin(object): 
     list_display = ('title',) 
     inlines = [PreviewInline] 

    admin.site.register(Issue, IssueAdmin) 

如何刪除預覽和上傳文件當我刪除問題模型?任何人都可以幫助我嗎?

回答

1

你確定這個問題沒有被刪除嗎?對於ForeignKey的的defaul行爲是級聯刪除:

ForeignKey.on_delete 當一個ForeignKey引用的對象被刪除,Django的默認模仿SQL約束ON DELETE CASCADE 的行爲,同時刪除包含ForeignKey的對象。此行爲 可以通過指定on_delete參數來覆蓋。

您使用的是sqlite3嗎?我不確定它默認啓用了級聯。

要刪除圖像,您可能需要使用pre_delete信號:

from django.db.models.signals import pre_save 
from django.dispatch import receiver 
from myapp.models import Preview 

@receiver(pre_delete, sender=Preview) 
def delete_image(sender, instance, using): 
    # delete the image -> instance.previewPath 

的信號更多信息: https://docs.djangoproject.com/en/dev/ref/signals/#django.db.models.signals.pre_delete https://docs.djangoproject.com/en/dev/topics/signals/

+0

問題和預覽都刪除了,我要刪除上傳文件 –

+0

要刪除圖像,您可能需要使用post_delete信號 –

+0

我是django世界的新手。如何使用post_delete信號? –

相關問題