We can’t overwrite delete() for deleting FileField and related files in Django. As we know that :
In Django 1.3, when a model is deleted the FileField’s delete() method won’t be called. If you need cleanup of orphaned files, you’ll need to handle it yourself (for instance, with a custom management command that can be run manually or scheduled to run periodically via e.g. cron).
To delete files that followed by deleting records of fileField, we can use signals.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Insurances(models.Model): name = models.ForeignKey(User) attachment = models.FileField() # Signals handler for deleting files after object record deleted # In Django 1.3, delete a record not remove the associated files def delete_filefield(sender, **kwargs): """Automatically deleted files when records removed. On Django 1.3, removing records will not followed by deleting files. Should manually delete PDF using signals post_delete. """ model = kwargs.get(‘instance’) model.file.delete(save=False) post_delete.connect(delete_filefield, Insurances) |