0

formsetから削除する必要があるオブジェクトを識別しました。formset deleteインライン・インスタンス

def save_formset(self, request, form, formset, change): 
     instances = formset.save(commit=False) 
     for instance in instances: 
      ...... 
     if formset.deleted_forms: 
      for obj in formset.deleted_forms: 
       obj.delete() //here is the issue 

これは、ここで何が悪かったのか

(Pdb) formset.deleted_forms 
[<django.forms.widgets.ActivitiesForm object at 0x7f19f6435f50>] 

あるものformset.deleted_formsでエラー

*** AttributeError: 'ActivitiesForm' object has no attribute 'delete' 

で終わりますか?基本的には、管理者が選択したインラインエントリを削除しようとしています

+0

明らかに、そのオブジェクトの 'delete'メソッドはありませんが、私はあなたが達成しようとしているものが何であるかは分かりません。 – Wtower

+0

は、インラインテーブルのコンテンツをアップロードしたことを前提としています。あなたはそれを削除したい! save_formset()をオーバーライドするとき。私たちはそれをどのように扱いますか? –

答えて

2

モデルフォームセットを使用している場合、ではなく、deleted_objectsをループする必要があります。詳細は、the docsを参照してください。ジャンゴ1.7(release notes)の前に、あなたがオブジェクトを手動で削除する必要はありませんでした

for obj in formset.deleted_objects: 
    obj.delete() 

は注意してください。オブジェクトは、commit=Falseであっても、save()を呼び出したときに削除されました。

+0

formset.deleted_objects (PDB)は formset.deleted_forms <0x7f19dc35f2d0でdjango.forms.formsets.ActivitiesFormFormSetオブジェクト>を終了しません[<0x7f19dc35f0d0でdjango.forms.widgets.ActivitiesFormオブジェクトを>] (PDB)は をformset.deleted_objects *** AttributeError: 'ActivitiesFormForm'オブジェクトに属性 'deleted_objects'がありません –

+0

古いバージョンのDjangoを使用しているようです。 – Alasdair

+0

django 1.7は私が使用しているものです –

関連する問題