在Django中,可以使用inlineformset_factory
来创建一个内联的表单集合。然而,在编辑时,内联表单集合的顺序可能会受到影响,这可能会导致问题。下面是解决这个问题的一种方法:
BaseInlineFormSet
。from django.forms import BaseInlineFormSet
class CustomInlineFormSet(BaseInlineFormSet):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 对内联表单进行排序
self.forms.sort(key=lambda x: x.instance.pk)
inlineformset_factory
时,指定formset
参数为自定义的表单集合类。from django.forms import inlineformset_factory
CustomFormSet = inlineformset_factory(ParentModel, ChildModel, formset=CustomInlineFormSet, fields=('field1', 'field2'))
在上面的代码中,ParentModel
是父模型,ChildModel
是子模型。fields
参数指定了要显示的字段。
这样,当编辑时,内联表单集合将会按照子模型的主键进行排序。