- Author:
- mindcruzer
- Posted:
- September 19, 2012
- Language:
- Python
- Version:
- 1.4
- Score:
- 0 (after 0 ratings)
This snippit is meant to be used with the pre_delete signal to delete any files associated with a model instance before the instance is deleted. It will search the model instance for fields that are subclasses of FieldFile, and then delete the corresponding files. As such, it will work with any model field that is a subclass of FileField.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | from django.db.models.fields.files import FieldFile
def file_cleanup(sender, instance, *args, **kwargs):
'''
Deletes the file(s) associated with a model instance. The model
is not saved after deletion of the file(s) since this is meant
to be used with the pre_delete signal.
'''
for field_name, _ in instance.__dict__.iteritems():
field = getattr(instance, field_name)
if issubclass(field.__class__, FieldFile) and field.name:
field.delete(save=False)
...
from django.db import models
from django.db.models.signals import pre_delete
class SomeModel(models.Model):
...
my_file = models.FileField(upload_to='my_files')
...
# delete my_file when we delete an instance of SomeModel
pre_delete.connect(file_cleanup, sender=SomeModel)
|
More like this
- Add custom fields to the built-in Group model by jmoppel 1 month, 1 week ago
- Month / Year SelectDateWidget based on django SelectDateWidget by pierreben 4 months, 3 weeks ago
- Python Django CRUD Example Tutorial by tuts_station 5 months, 1 week ago
- Browser-native date input field by kytta 6 months, 3 weeks ago
- Generate and render HTML Table by LLyaudet 7 months ago
Comments
There is special app for that django-cleanup
settings.py
#
Please login first before commenting.