form fields ejemplos dynamically python django django-forms

python - fields - ¿Cómo guardar modelos de formset en línea en Django?



dynamic form django (1)

Los conjuntos de formularios tienen un método .save () y la documentación dice que debe guardarse en vistas como esta:

if request.method == "POST": formset = BookInlineFormSet(request.POST, request.FILES, instance=author) if formset.is_valid(): formset.save() # Do something. else: formset = BookInlineFormSet(instance=author)

Estoy siguiendo esto, y funciona cuando se crea el padre, pero obtengo una excepción en Django cuando está guardando modelos existentes. El padre realmente se guarda en la base de datos y la excepción se produce al guardar modelos relacionados.

KeyError at /bcdetails/NewProds/1/ None Request Method: POST Request URL: http://rdif.local/bcdetails/NewProds/1/ Exception Type: KeyError Exception Value: None Exception Location: /usr/lib/python2.5/site-packages/django/forms/models.py in save_existing_objects, line 403 Python Executable: /usr/bin/python Python Version: 2.5.2 Python Path: [''/usr/lib/python2.5/site-packages/paramiko-1.7.4-py2.5.egg'', ''/usr/lib/python2.5/site-packages/Fabric-0.0.9-py2.5.egg'', ''/usr/lib/python2.5'', ''/usr/lib/python2.5/plat-linux2'', ''/usr/lib/python2.5/lib-tk'', ''/usr/lib/python2.5/lib-dynload'', ''/usr/local/lib/python2.5/site-packages'', ''/usr/lib/python2.5/site-packages'', ''/usr/lib/python2.5/site-packages/Numeric'', ''/usr/lib/python2.5/site-packages/PIL'', ''/usr/lib/python2.5/site-packages/gst-0.10'', ''/var/lib/python-support/python2.5'', ''/usr/lib/python2.5/site-packages/gtk-2.0'', ''/var/lib/python-support/python2.5/gtk-2.0'', ''/usr/lib/site-python'', ''/home/www/rdif.com/test/''] Server time: Wed, 7 Jan 2009 23:18:19 -0700

Pasé un tiempo en la fuente Django pero no encuentro nada allí. ¿Debo iterar a través de cada formset y solo guardar los modelos que han cambiado?


Descubrí mi problema y es embarazoso.

En el formulario del modelo padre, tuve exclude = (''...'',) en la clase Meta, y uno de los campos excluidos fue crítico para las relaciones en inline_formsets. Por lo tanto, eliminé las exclusiones e ignoré esos campos en la plantilla.