Hi, I think that you need to set the form's object instance when collecting the POST data too:
form = WrestlerProfileForm(request.POST, request.FILES, instance=profile) That way, the image will be set with the existing one, and the form won't complain when validating. Hope it helps, Julien On Aug 21, 4:09 pm, Robvdl <[EMAIL PROTECTED]> wrote: > I've got a model with an ImageField in it: > > image = models.ImageField(upload_to='images/wrestlers', > help_text='...') > > I can upload images no problem using the Admin app. > > I wish to upload images in my own Django app, so I created a form: > > class WrestlerProfileForm(forms.ModelForm): > class Meta: > model = WrestlerProfile > exclude = ('user',) > > Now say I already saved a wrestler profile in admin and uploaded a > picture. In admin, if I re-edit that same profile, the image field is > still set (i.e. contains an image), and I can leave it as is, just > edit the other fields and leave the image field alone, it saves no > problem. > > If I do this in my app, it won't populate the image field when the > form is first shown, even though I use instance=profile when I > initialize the form, it only populates the other fields. If I hit > save, it complains that the image field is required. I am able to save > if I upload another picture, but this is not what I want to have to > do, always upload a picture, just to be able to save the profile. > > Here is my view: > > @login_required > def edit_profile(request): > try: > profile = > WrestlerProfile.objects.get(user__username=request.user.username) > except WrestlerProfile.DoesNotExist: > profile = None > if request.method == 'POST': > form = WrestlerProfileForm(request.POST, request.FILES) > if form.is_valid(): > wrestler = form.save(commit=False) > wrestler.user = request.user > if not profile is None: > wrestler.id = profile.id > wrestler.save() > return HttpResponseRedirect(request.META['PATH_INFO']) > else: > if profile == None: > form = WrestlerProfileForm() > else: > form = WrestlerProfileForm(instance=profile) > return render_to_response('registration/profile.html', { > 'form': form, > }, context_instance=RequestContext(request)) > > The reason why I save with commit=False then set the wrestler.id to > profile.id, is because if you look at my form, you may notice I > exclude the user field, which I actually get from the current logged > in user. > > However, the problem is before that, it actually complains about the > missing image field at the time I execute form.is_valid(). > > Any ideas how to get around this issue? --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---