Hi folks,

I have various models with File and Image fields. I want to keep the
filesystem storage clean, removing any orphaned file upon a new one
being uploaded. To date I've been overriding save() in each model,
which isn't terribly robust:
class MyModel
        def save(self, **kwargs):
                # remove old file if new one is uploaded
                old_obj = MyModel.objects.get(pk=self.pk) if self.pk else None
                if old_obj and self.image != old_obj.image:
                        old_obj.image.storage.delete(old_obj.image.name)

                super(MyModel, self).save(**kwargs)

For obvious reasons I'd like to refactor this into a custom FileField/
ImageField. The logic that I would like is even simpler and more
reliable than the above:

1. If a new file was provided, delete the old one.
2. Save.

The trouble is I can't figure out how, at the Model or Field level, to
figure out if a new physical file was *really actually provided*, in
order to decide whether I should delete the underlying old one.

Thanks for any help on this one.

Regards
Scott

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to