0

我有一个表格,其中模型和外键模式表示为内联表单集。我正在节省订购的表单集的时间。事实上,每次我尝试删除一个时,它都会成倍增加。

在forms.py中:

class PublicationForm(ModelForm):
    class Meta:
        model = Publication
        fields = ['title']

SectionFormSet = inlineformset_factory(Publication, Section, can_delete=True, can_order=True, extra=2)

在views.py中:

if publication_form.is_valid():
    pub = publication_form.save(commit=False)
    section_formset = SectionFormSet(request.POST, instance=pub, prefix='section')
    if section_formset.is_valid():
        pub.save()
        for s in section_formset.ordered_forms:
            s.instance.order = s.cleaned_data['ORDER']
            s.save()

我一直在寻找,但什么也没找到。有人有解决方案吗?

谢谢!!

4

1 回答 1

0

是的,你把所有的储蓄都弄乱了。像这样的东西:

1 - 您的表单集包含 SectionForm 的集合,因此您正在测试表单在错误的循环中是否有效。你要这个:

if request.method == 'POST':
    section_formset = SectionFormSet(request.POST, instance=<an instance of Publication>, prefix='section')
    if section_formset.is_valid():
        instances = section_formset.save(commit=False)
        for instance in instances:
             #do something
             instance.save()
        return HttpResponseRedirect('<a url>')
else:
    section_formset = SectionFormSet(instance=<an instance of Publication>, prefix='section')

如果您只是将部分表单的“订单”值保存到部分模型订单属性中,则不需要执行实例循环 - 它已为您完成。您只需调用 section_formset.save()。

于 2013-09-11T22:35:00.197 回答