Modelformset_factory включает пустой объект списка как часть данных management_form, отображаемых на экране

При рендеринге набора форм, созданного с помощью modelformset_factory, я получаю разные результаты между локальным запущенным экземпляром приложения и версией, запущенной на сервере.

В обе версии приложения включены следующие файлы:

forms.py

class NewCourseHoleForm(ModelForm):

    class Meta:
        model = CourseHole
        fields = [
            'hole_number',
            'hole_name',
            'par',
            'stroke_index',
            'length',
        ]

    def __init__(self, *args, **kwargs):
        super(NewCourseHoleForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper(self)
        self.helper.form_tag = False
        self.helper.form_show_errors = True
        self.helper.form_show_labels = False
        self.helper.form_class = 'form-inline'
        self.helper.use_custom_control = True
        self.helper.layout = Layout(
            Div(
                Div(
                    Div(Field('hole_name', css_class='text-center'), css_class="col-3"),
                    Div(
                        Field('hole_number', css_class='d-none'),
                        css_class="d-none"),
                    Div(Field('length', min=50, max=800), css_class="col-3"),
                    Div(Field('par', min=3, max=5), css_class="col-3"),
                    Div(Field('stroke_index', min=1, max=18), css_class="col-3"),
                    css_class='row',
                ),
                css_class='col-12'
            ),
        )


hole_formset = modelformset_factory(
    CourseHole,
    form=NewCourseHoleForm,
    min_num=18,
    max_num=18,
    # validate_max=True
    # extra=18,
    # can_delete=False,
)

views.py

class CourseDetailView(LoginRequiredMixin, DetailView):
    login_url = '/login/'
    redirect_field_name = 'redirect_to'
    model = Course
    slug_field = 'uuid'
    slug_url_kwarg = 'uuid'
    template_name = 'courses/course_detail.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        course = Course.objects.filter(
            uuid=self.kwargs.get('uuid')).first()
        context['title'] = f'{course.name} - Detail'
        teebox_check = CourseTeeBox.objects.filter(
            course=course).order_by('-course_length')
        context['teeboxes'] = teebox_check
        context['teeboxForm'] = f.NewCourseTeeBoxForm(
            prefix='teebox', course=course)
        holes = [{'hole_number': n, 'hole_name': f'Hole {n}'} for n in range(1,19)]
        context['holes_formset'] = f.hole_formset(
            queryset=CourseHole.objects.none(), prefix='holes', initial=holes)
        return context

    def get_queryset(self):
        queryset = super(CourseDetailView, self).get_queryset()
        return queryset

template.html

<div class="row">
    {{ holes_formset.management_form }}
    {% for form in holes_formset %}
        {% crispy form %}
        {{form.id}}
    {% endfor %}
</div>

При рендеринге страницы в рамках моего локального тестирования результат выглядит как на картинке ниже:screenshot of form display on local version of app а html выглядит так, как ожидалось:

screenshot of html relating to area where added brackets dont appear on local version of app

При выполнении точно такого же кода на сервере получается следующее: перед формами добавляется объект пустого списка и скрытый набор форм management_form: screenshot of form display on server screenshot of html relating to area where added brackets appear on server version of app

Я попробовал несколько версий набора форм и удалил исходные данные, а также обновил прилагаемый набор queryset, чтобы включить существующие элементы, и все равно набор форм возвращает пустой [] перед формой management_form. Любой совет будет очень признателен.

Вернуться на верх