内联django modelformset存在问题?

内联django modelformset存在问题?,django,python-3.x,Django,Python 3.x,我正在学习实现django inlineformset,我面临以下错误。在客户端,我使用的是django动态表单集jquery插件。但是当我渲染表单集时,我看到“添加另一个或删除”选项多次出现。这就是我到目前为止所尝试的。当我在代替表单中切换到表单集时,发生了此错误 forms.py: 类BaseSkillFormSet(BaseModelFormSet): 定义初始化(self,*args,**kwargs): super(BaseSkillFormSet,self)。\uuuuuu初始值(*

我正在学习实现django inlineformset,我面临以下错误。在客户端,我使用的是
django动态表单集
jquery插件。但是当我渲染表单集时,我看到“添加另一个或删除”选项多次出现。这就是我到目前为止所尝试的。当我在代替表单中切换到表单集时,发生了此错误

forms.py

类BaseSkillFormSet(BaseModelFormSet):
定义初始化(self,*args,**kwargs):
super(BaseSkillFormSet,self)。\uuuuuu初始值(*args,**kwargs)
self.queryset=Skill.objects.exclude(Skill\u name\u isnull=True)
类BaseWorkExperienceFormSet(BaseModelFormSet):
定义初始化(self,*args,**kwargs):
super(BaseWorkExperienceFormSet,self)。\uuuu初始值(*args,**kwargs)
self.queryset=WorkExperience.objects.exclude(
公司名称(空=真)
类BaseEducationFormSet(BaseModelFormSet):
定义初始化(self,*args,**kwargs):
超级(BaseEducationFormSet,self)。\uuuuuu初始值(*args,**kwargs)
self.queryset=Education.objects.exclude(name\uu isnull=True)
课堂技能表(forms.ModelForm):
类元:
模型=技能
字段=(‘技能名称’、‘熟练程度’、)
课堂工作体验表单(forms.ModelForm):
类元:
模型=工作经验
排除=('user',)
小部件={
“开始日期”:DateInput()
}
班级教育形式(forms.ModelForm):
类元:
模型=教育
排除=('user',)
小部件={
“开始日期”:DateInput()
}
类集合创建(更新视图):
model=UserProfile
模板名称='accounts/user\u profile\u form.html'
form\u class=UserProfileForm
success\u url=None
def获取上下文数据(自身,**kwargs):
data=super(CollectionCreate,self)。获取上下文数据(**kwargs)
如果self.request.POST:
data['formset']=SkillFormSet(self.request.POST)
数据['formset1']=WorkExperienceFormSet(self.request.POST)
数据['formset3']=EducationFormSet(self.request.POST)
返回数据
其他:
打印('object',self.object)
数据['formset']=SkillFormSet()
数据['formset1']=WorkExperienceFormSet()
数据['formset3']=EducationFormSet(实例=self.object)
返回数据
SkillFormSet=inlineformset\u工厂(
UserProfile,Skill,formset=BaseSkillFormSet,
字段=['skill\u name','level\u of \u experience'],can\u delete=True,extra=1
)
WorkExperienceFormSet=inlineformset\u工厂(
UserProfile,WorkExperience,formset=BaseWorkExperienceFormSet,
字段=[“公司名称”、“开始日期”、“结束日期”、“工作描述”],
can_delete=True,extra=1,
)
EducationFormSet=inlineformset\u工厂(
UserProfile,Education,formset=BaseEducationFormSet,
字段=[“名称”、“开始日期”、“结束日期”、“教育类型”],
can_delete=True,extra=1,max_num=5,
)
formset.html

    {% load static %}
    {% load crispy_forms_tags %}
    <table>
    {{ formset.management_form|crispy }}

        {% for form in formset.forms %}
                <tr class="{% cycle 'row1' 'row2' %} formset_row-{{ formset.prefix }}">
                    {% for field in form.visible_fields %}
                    <td>
                        {# Include the hidden fields in the form #}
                        {% if forloop.first %}
                            {% for hidden in form.hidden_fields %}
                                {{ hidden }}
                            {% endfor %}
                        {% endif %}
                        {{ field.errors.as_ul }}
    {{ field|as_crispy_field }}
                    </td>
                    {% endfor %}
                </tr>
        {% endfor %}


    {% for form in formset1.forms %}
                <tr class="{% cycle 'row1' 'row2' %} formset_row-{{ formset.prefix }}">
                    {% for field in form.visible_fields %}
                    <td>
                        {# Include the hidden fields in the form #}
                        {% if forloop.first %}
                            {% for hidden in form.hidden_fields %}
                                {{ hidden }}
                            {% endfor %}
                        {% endif %}
                        {{ field.errors.as_ul }}
    {{ field|as_crispy_field }}
                    </td>
                    {% endfor %}
                </tr>
        {% endfor %}

    {% for form in formset2.forms %}
                <tr class="{% cycle 'row1' 'row2' %} formset_row-{{ formset.prefix }}">
                    {% for field in form.visible_fields %}
                    <td>
                        {# Include the hidden fields in the form #}
                        {% if forloop.first %}
                            {% for hidden in form.hidden_fields %}
                                {{ hidden }}
                            {% endfor %}
                        {% endif %}
                        {{ field.errors.as_ul }}
    {{ field|as_crispy_field }}
                    </td>
                    {% endfor %}
                </tr>
        {% endfor %}

    </table>
    <br>
        <script src="{% static 'js/vendor/jquery/jquery.min.js' %}"></script>
            <script src="{% static 'js/formset.js' %}"></script>

    <script type="text/javascript">
        $('.formset_row-{{ formset.prefix }}').formset({
            addText: 'add another',
            deleteText: 'remove',
            prefix: '{{ formset.prefix }}',
        });
    </script>
{%load static%}
{%load crispy_forms_tags%}
{{formset.management{u form|crispy}}
{formset.forms%%中表单的%
{%form.visible_fields%}
{#在#表单中包含隐藏字段}
{%if-forloop.first%}
{%用于隐藏在表单中。隐藏的_字段%}
{{隐藏}}
{%endfor%}
{%endif%}
{{field.errors.as_ul}}
{{field | as_crispy_field}
{%endfor%}
{%endfor%}
{formset1.forms%}
{%form.visible_fields%}
{#在#表单中包含隐藏字段}
{%if-forloop.first%}
{%用于隐藏在表单中。隐藏的_字段%}
{{隐藏}}
{%endfor%}
{%endif%}
{{field.errors.as_ul}}
{{field | as_crispy_field}
{%endfor%}
{%endfor%}
{formset2.forms%}
{%form.visible_fields%}
{#在#表单中包含隐藏字段}
{%if-forloop.first%}
{%用于隐藏在表单中。隐藏的_字段%}
{{隐藏}}
{%endfor%}
{%endif%}
{{field.errors.as_ul}}
{{field | as_crispy_field}
{%endfor%}
{%endfor%}

$('.formset_行-{{formset.prefix}}').formset({ addText:“添加另一个”, deleteText:“删除”, 前缀:“{formset.prefix}}”, });

您需要分别实例化每个表单集

为每个表单集使用一个单独的表,添加一个唯一的ID并使用它来实例化表单集,如下所示:

{% load static %}
{% load crispy_forms_tags %}

{{ formset.management_form|crispy }}

<table id="formset">
    {% for form in formset.forms %}
            <tr class="{% cycle 'row1' 'row2' %} formset_row-{{ formset.prefix }}">
                {% for field in form.visible_fields %}
                <td>
                    {# Include the hidden fields in the form #}
                    {% if forloop.first %}
                        {% for hidden in form.hidden_fields %}
                            {{ hidden }}
                        {% endfor %}
                    {% endif %}
                    {{ field.errors.as_ul }}
                    {{ field|as_crispy_field }}
                </td>
                {% endfor %}
            </tr>
    {% endfor %}
</table>

<table id="formset1">
{% for form in formset1.forms %}
            <tr class="{% cycle 'row1' 'row2' %} formset_row-{{ formset1.prefix }}">
                {% for field in form.visible_fields %}
                <td>
                    {# Include the hidden fields in the form #}
                    {% if forloop.first %}
                        {% for hidden in form.hidden_fields %}
                            {{ hidden }}
                        {% endfor %}
                    {% endif %}
                    {{ field.errors.as_ul }}
                    {{ field|as_crispy_field }}
                </td>
                {% endfor %}
            </tr>
    {% endfor %}
</table>

<table id="formset2">
{% for form in formset2.forms %}
            <tr class="{% cycle 'row1' 'row2' %} formset_row-{{ formset2.prefix }}">
                {% for field in form.visible_fields %}
                <td>
                    {# Include the hidden fields in the form #}
                    {% if forloop.first %}
                        {% for hidden in form.hidden_fields %}
                            {{ hidden }}
                        {% endfor %}
                    {% endif %}
                    {{ field.errors.as_ul }}
                    {{ field|as_crispy_field }}
                </td>
                {% endfor %}
            </tr>
    {% endfor %}
</table>

<br>
    <script src="{% static 'js/vendor/jquery/jquery.min.js' %}"></script>
        <script src="{% static 'js/formset.js' %}"></script>

<script type="text/javascript">
    $('#formset .formset_row-{{ formset.prefix }}').formset({
        addText: 'add another',
        deleteText: 'remove',
        prefix: '{{ formset.prefix }}',
    });
    $('#formset1 .formset_row-{{ formset1.prefix }}').formset({
        addText: 'add another',
        deleteText: 'remove',
        prefix: '{{ formset.prefix }}',
    });
    $('#formset2 .formset_row-{{ formset2.prefix }}').formset({
        addText: 'add another',
        deleteText: 'remove',
        prefix: '{{ formset.prefix }}',
    });
</script>
{%load static%}
{%load crispy_forms_tags%}
{{formset.management{u form|crispy}}
{formset.forms%%中表单的%
{%form.visible_fields%}
{#在#表单中包含隐藏字段}
{%if-forloop.first%}
{%用于隐藏在表单中。隐藏的_字段%}
{{隐藏}}
{%endfor%}
{%endif%}
{{field.errors.as_ul}}
{{field}as|cri