3

フォームセットには .save() メソッドがあり、ドキュメントには次のようなビューで保存するように書かれています:

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 ソースでしばらく過ごしましたが、何も見つかりません。各フォームセットを繰り返し処理し、変更されたモデルのみを保存する必要がありますか?

4

1 に答える 1

4

私は自分の問題を発見しました、そしてそれは恥ずかしいです。

Meta クラスにある親モデル フォームexclude = ('...',)では、除外されたフィールドの 1 つが inline_formsets の関係にとって重要でした。そのため、除外を削除し、テンプレートのそれらのフィールドを無視しました。

于 2009-01-08T10:27:55.740 に答える