Hello,
I ended with this code:
if insumoForm.is_valid() and not insumoForm.cleaned_data["DELETE"]:
insumoRecurso = insumoForm.save(commit=False)
if not insumoRecurso.archivo.name:
continue
insumoRecurso.recurso = recurso
insumoRecurso.save()
On Thursday, February 27, 2014 12:46:02 PM UTC-3, Héctor Urbina wrote:
>
> Hello,
>
> I have a edit view to modify an object. The model includes an inline
> formset of insumoRecurso objects, for including files associated with the
> main object. These files appear with a checkbox for clearing files
> (ClearableFileInput widget). What should I test on my view to detect that
> the checkbox has been selected?
>
> Here's the code of my view:
>
> @login_required
> def editarRecurso(request, recurso_id):
> recurso = get_object_or_404(Recurso, pk=recurso_id)
> objetos = {}
> objetos["recurso"] = recurso
> u = request.user
> if recurso.creador != u and not (usuarioEsSupervisor(u) or
> usuarioEsCoordinador(u)):
> objetos["mensaje_de_error"] = "Usted no puede editar este recurso."
> else:
> InsumoFormset = inlineformset_factory(Recurso, InsumoRecurso, extra=1)
> if request.method == 'POST':
> recursoForm = RecursoForm(request.POST, instance=recurso)
> insumoFormset = InsumoFormset(request.POST, request.FILES, instance
> = recurso)
> if recursoForm.is_valid():
> recurso = recursoForm.save(commit=False)
> recurso.save()
> notificarCreacionRecurso(request, recurso)
> for insumoForm in insumoFormset:
> if insumoForm.is_valid():
> insumoRecurso = insumoForm.save(commit=False)
> if not insumoRecurso.archivo.name: #This is the way I found
> for not saving objects that doesn't have an uploaded file (i.e., when user
> doesn't choose a file to upload)!!! is there a better way?
> continue
> ir = insumoRecurso.save()
> if insumoRecurso.archivo.remove: #This is not working,
> "remove" attribute doesn't exist... but here is where I expect a way of
> detecting clear checkbox selection. If there is no file, then the whole
> insumoRecurso object must be deleted.
> ir.delete()
> return redirect(reverse('recursos:detalle', args=(recurso.id,)))
> else:
> objetos["recursoForm"] = recursoForm
> objetos["insumoFormset"] = insumoFormset
> else:
> objetos["recursoForm"] = RecursoForm(instance=recurso)
> objetos["recursoForm"].fields["curso"].queryset =
> Curso.objects.filter(owner=request.user)
> objetos["insumoFormset"] = InsumoFormset(instance=recurso)
>
> template = loader.get_template('recursos/editarRecurso.html')
> context = RequestContext(request, objetos)
> return HttpResponse(template.render(context))
>
> I would appreciate any help, By the way, even though I check the clear
> checkbox, the file is never deleted (I would assume that would happen on
> insumoRecurso.save(), but the files always remain there)
>
> Thanks,
> Hector.
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/1beb3875-f09f-4dfd-adef-3dba14c65106%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.