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.

Reply via email to