我使用Formset
建立了can_delete=true
。 Formset
工作正常。问题是重新填充表单,因为在提交之后,用户被重定向到同一表单页面上。我错误的是,删除的项目仍然保留在表单中,即使它在DB中不再存在。
我的forms.py:
class BookForm(forms.ModelForm):
class Meta:
model = Book
fields = ['title', 'description', 'author']
BookFormset = forms.modelformset_factory(
Book,
form=BookForm,
fields=['title', 'description', 'author'],
can_delete=True,
extra=1
)
提交观看功能
def submit(request):
book_formset = BookFormset(request.POST)
if book_formset.is_valid():
messages.add_message(request, messages.SUCCESS, 'Correct.')
book_formset.clean()
book_formset.save()
else:
messages.add_message(request, messages.ERROR, 'Error!')
context = {
'book_formset': book_formset,
}
return render(request, 'sand/index.html', context)
我尝试了什么:
在以下屏幕中,我尝试删除疯狂的Rabit book
。
提交前的屏幕:
提交后的屏幕:
答案 0 :(得分:1)
成功提交表单后,您应该重定向(即使它是相同的URL)。这样可以防止重复提交。重定向后,重新加载formset时不会显示已删除的项目。
from django.shortcuts import redirect
def submit(request):
...
if book_formset.is_valid():
book_formset.save()
return redirect('/success_url/')