2016-04-13 34 views
0

Formset'ten silmem gereken nesneyi belirlediniz.formset delete satır içi örneği

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 

yap Bu formset.deleted_forms Burada yanlış giden ne

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

budur hata

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

ile biter? Temel olarak yönetici satır içi girişini silmeyi deniyorum admin

+0

Açıkçası, bu nesne için 'delete' yöntemi yoktur, ancak tam olarak ne elde etmeye çalıştığınızdan emin değilim. – Wtower

+0

, bir satır içi tablo içeriği yüklediğinizi varsayalım. ve sen silmek istiyorsun! save_formset() 'i geçersiz kıldığımızda. Nasıl halledebiliriz? –

cevap

2

Model form kümesi kullanıyorsanız, deleted_forms değil deleted_objects arasında döngü yapmalısınız. Daha fazla bilgi için bkz. the docs. Django 1.7 (release notes) önce, el nesneleri silmenize gerek olmadığını

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

Not. Nesneler, commit=False ile bile kaydetme() çağırdığınızda silinmiştir.

+0

formset.deleted_objects çıkmamalı (PDB) (PDB) formset.deleted_objects [<0x7f19dc35f0d0 de django.forms.widgets.ActivitiesForm nesne>] formset.deleted_forms *** AttributeError: 'ActivitiesFormFormSet' nesnesinin 'deleted_objects' özelliği yoktur –

+0

Django'nun eski bir sürümünü kullanıyor olabilirsiniz. – Alasdair

+0

django 1.7 ne kullanıyorum –