Hi! I have this old code here.
# forms.py class UploadFileForm(ModelForm): title = forms.CharField(max_length=250 ,label="Nome:") original_image = forms.ImageField(label="Imagem:") class Meta: model = Photo # models.py from django.dispatch import receiver from django.db.models.signals import pre_delete class Photo(models.Model): title = models.CharField(max_length=255) pub_date = models.DateField(auto_now = True) original_image = models.ImageField(upload_to='photos') slug_photo = AutoSlugField(populate_from=('title'), unique=True, max_length=255, overwrite=True) model = models.ForeignKey(Model, blank=True, null=True) @receiver(pre_delete, sender=Photo) def delete_image(sender, instance, **kwargs): os.remove(unicode(instance.original_image.path)) # remove the image from folder "photos" # views.py def upload_photo(request): if request.method == 'POST': model = get_object_or_404(Model, pk=request.POST.get("model")) form = UploadForm(request.POST, request.FILES) photo_exist = Photo.objects.filter(model__id = model.id) if not photo_exist: if form.is_valid(): form.save() messages.add_message(request, messages.SUCCESS, 'Image save succesfull!') return HttpResponseRedirect(reverse('detail_model', args=[model.slug])) else: return render_to_response('project/app/detail.html',locals(),context_instance=RequestContext(request)) else: if form.is_valid(): photo_exist.delete() form.save() messages.add_message(request, messages.SUCCESS, 'Image update succesfull!') return HttpResponseRedirect(reverse('detail_model', args=[model.slug])) else: photo = Photo.objects.get(model__id = model.id) # send the photo to detail page return render_to_response('project/app/detail.html',locals(),context_instance=RequestContext(request)) 2012/7/13 m.paul <e1935...@rtrtr.com> > Hi All, > > I have a Model with an image field and I want to be able to change the > image using a ModelForm. When changing the image, the old image should be > deleted and replaced by the new image. > > I have tried to do this in the clean method of the ModelForm like this: > > def clean(self): > cleaned_data = super(ModelForm, self).clean() > > old_profile_image = self.instance.image > if old_profile_image: > old_profile_image.delete(save=False) > return cleaned_data > > This works fine unless the file indicated by the user is not correct (for > example if its not an image), which result in the image being deleted > without any new images being saved. I would like to know where is the best > place to delete the old image? By this I mean where can I be sure that the > new image is correct before deleting the old one? I prefer to do this in my > ModelForm class if possible but doing it in the Model class would also be > acceptable. > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/django-users/-/kB0VSrr9O1MJ. > To post to this group, send email to django-users@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. > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@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.