2015-02-13 6 views
0

Я создал modelformset usign modelformset_factoryМодель Fomset и удаление

formfactory = modelformset_factory(HasJobs, form=HasJobsModelForm, can_delete=True) 
formset = modelformset_factory(request.POST or None) 

if request.method == "POST": 
    form = AccountModelForm(request.POST, instance=account) 
    account = form.save() 
    for job_form in formset: 
     instance = job_form.save(commit=False) 
     instance.account = account 
     instance.save() 

Другими словами создать учетную запись, используя каждую форму модели, а затем создать каждый экземпляр HasJob, используя каждую форму в formset и сохранить его после того, как установив свойство учетной записи экземпляра на вышеупомянутую сохраненную учетную запись. Но когда я нажимаю кнопку удаления каждой формы в наборе форм на шаблоне, форма публикуется нормально, но не удаляется. Почему это?

EDIT: изменение кода в эту внутреннюю, если

account=form.save() 
formset.save() 

приводит к удалению экземпляра, но не в экономии при создании новой один

ответ

1

Вы можете перемещаться по formset.deleted_forms:

for form in formset.deleted_forms: 
    if form.instance.pk: 
     form.instance.delete() 

В качестве альтернативы вы можете проверить для DELETE ключ в cleaned_data:

for job_form in formset: 
    if job_form.is_valid(): 
     if job_form.cleaned_data.get('DELETE') and job_form.instance.pk: 
      job_form.instance.delete() 
     else: 
      instance = job_form.save(commit=False) 
      instance.account = account 
      instance.save() 
+0

Нет, я использую 1.6 django. Можно ли это сделать в 1.6? В нем говорится, что modelformset обрабатывает само удаление при вызове save. Но он не удалит – Apostolos

+0

См. Обновленный ответ. – catavaran

 Смежные вопросы

  • Нет связанных вопросов^_^