2009-01-08 32 views
3

表單集有一個.save()方法,以及documentation說,在視圖來保存這樣的:如何在Django中保存內聯formset模型?

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) 

我下面這一點,並且在創建父時,它的工作原理,但我發現了一個異常在Django中,它保存現有的模型。父實際保存到數據庫,保存相關模型時發生異常。

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 

我花了一段時間在Django的源,但無法找到任何東西。我是否需要遍歷每個formset並只保存已更改的模型?

+0

你應該發佈你的觀點,形式和模型,以便我們仔細看看。 – muhuk 2009-01-08 08:00:53

回答

4

我發現我的問題,這是令人尷尬的。

在父類型表單中,我在Meta類中有exclude = ('...',),其中一個排除的字段對於inline_formsets中的關係至關重要。所以,我刪除了排除項並忽略了模板中的那些字段。

相關問題