#11732: Exclude _init_time from import form fields list

This commit is contained in:
Jeremy Stretch 2023-08-01 11:53:35 -04:00
parent cbf4b43b35
commit 7b998cfeb4

View File

@ -8,7 +8,7 @@ from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist, Valida
from django.db import transaction, IntegrityError from django.db import transaction, IntegrityError
from django.db.models import ManyToManyField, ProtectedError from django.db.models import ManyToManyField, ProtectedError
from django.db.models.fields.reverse_related import ManyToManyRel from django.db.models.fields.reverse_related import ManyToManyRel
from django.forms import ModelMultipleChoiceField, MultipleHiddenInput from django.forms import HiddenInput, ModelMultipleChoiceField, MultipleHiddenInput
from django.http import HttpResponse from django.http import HttpResponse
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse from django.urls import reverse
@ -313,6 +313,13 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
""" """
return data return data
def _get_form_fields(self):
# Exclude any fields which use a HiddenInput widget
return {
name: field for name, field in self.model_form().fields.items()
if type(field.widget) is not HiddenInput
}
def _save_object(self, model_form, request): def _save_object(self, model_form, request):
# Save the primary object # Save the primary object
@ -430,7 +437,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
return render(request, self.template_name, { return render(request, self.template_name, {
'model': self.model_form._meta.model, 'model': self.model_form._meta.model,
'form': form, 'form': form,
'fields': self.model_form().fields, 'fields': self._get_form_fields(),
'return_url': self.get_return_url(request), 'return_url': self.get_return_url(request),
**self.get_extra_context(request), **self.get_extra_context(request),
}) })
@ -475,7 +482,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
return render(request, self.template_name, { return render(request, self.template_name, {
'model': model, 'model': model,
'form': form, 'form': form,
'fields': self.model_form().fields, 'fields': self._get_form_fields(),
'return_url': self.get_return_url(request), 'return_url': self.get_return_url(request),
**self.get_extra_context(request), **self.get_extra_context(request),
}) })