/ / Como salvar modelos de formset embutidos no Django? - python, django, django-forms

Como salvar modelos de formulários in-line no Django? - python, django, django-forms

Os conjuntos de formulários têm um método .save () e o método documentação diz para salvar em visualizações 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)

Estou seguindo isso, e funciona quando o paié criado, mas estou recebendo uma exceção no Django quando ele está salvando modelos existentes. O pai na verdade é salvo no banco de dados e a exceção ocorre ao salvar 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

Passei algum tempo no código-fonte do Django, mas não consigo encontrar nada lá. Eu preciso iterar em cada formset e salvar apenas os modelos que foram alterados?

Respostas:

4 para resposta № 1

Descobri meu problema e é constrangedor.

No formulário do modelo pai eu tive exclude = ("...",) na classe Meta, e um dos campos excluídos era crítico para as relações nos inline_formsets. Portanto, removi as exclusões e ignorando esses campos no modelo.