nin...@gmail.com
unread,May 16, 2009, 6:36:03 PM5/16/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Django-es
Muy buenas.
Uso modelformset_factory para generar formularios a partir de modelos,
y lo estoy usando para generar un formulario que modifique una fila ya
existente en la base de datos. La cuestión, es que también me interesa
poder modificar los datos introducidos por el usuario (en este caso,
para cambiar el Id para que en vede modificar la fila, se haga una
fila nueva, además de algunos cambios más). Para esto uso formset.save
(commit=False)
[CÓDIGO]
TheFormSet = modelformset_factory(Hardware, exclude=('father',
'first_father', 'published', 'stars', 'stars_votes', 'user', 'date'),
extra=0)
if request.method == 'POST':
querySET = Hardware.objects.filter(id=improve)
formset = TheFormSet(
request.POST,
request.FILES,
queryset = querySET
)
# No se envia el formulario, se "abre" para modificarlo...
if formset.is_valid():
formset_save = formset.save(commit=False)
else:
formset = TheFormSet(queryset=Hardware.objects.filter(id=improve))
[/CÓDIGO]
La cuestión es que, formset_save, la variable donde se guarda la
salida de formset.save(commit=False), tiene un listado vació, es
decir, [], al contrario de lo que suele ocurrir cuando se genera un
formulario para una fila nueva en la base de datos.
La gracia es que el formulario valida, incluso si uso formset.save(),
los datos se guardan perfectamente en la base de datos.
Me he quedado sin ideas... espero que alguien pueda arrojar un poco de
luz en este asunto :)
Un saludo, y gracias.