Не сохраняется инлайн-формат
У меня проблемы с набором встроенных форм, который сохраняет файлы. Раньше он работал как ожидалось, но потом перестал это делать.
Я новичок в Django и Python, поэтому я не так много знаю об отладке в этой среде.
Ошибка не возникает, терминал показывает только POST, а родительская форма сохраняет свои изменения.
Стоит отметить, что если я использую обычную форму для хранения этих файлов, они сохраняются в базе данных и в файловой системе. Таким образом, проблема должна быть в самом наборе форм.
Любая помощь будет очень признательна.
Заранее спасибо.
Вот мои формы
class ReporteForm(forms.ModelForm):
class Meta:
model = Reporte
fields = ('fecha', 'tipo', 'nis', 'descripcion')
def __init__(self, *args, **kwargs):
pk = kwargs.pop('pk', None)
super(ReporteForm, self).__init__(*args, **kwargs)
self.fields['pk'].queryset = Reporte.objects.filter(pk=pk)
class ArchivosForm(forms.ModelForm):
class Meta:
model = ArchivosReporte
fields = ['archivo', 'reporte']
ArchivoInlineFormset = inlineformset_factory(
Reporte,
ArchivosReporte,
form=ArchivosForm,
extra=5,
max_num=5,
can_delete=False
)
Мое мнение
class ReporteCV(CreateView):
model = Reporte
context_object_name = 'contexto'
fields = ['fecha', 'tipo', 'nis', 'descripcion']
template_name = "segcom/modal_form.html"
def form_valid(self, form):
if form.has_changed():
self.object = form.save(commit=True)
reporte = self.object
formset = ArchivoInlineFormset(request.POST,request.FILES)
if formset.has_changed(): #### IT'S NOT BEING TRIGGERED
archivos = formset.save(commit=False)
for archivo in archivos:
if actualizacion:
archivo.actualizacion = reporte
else:
archivo.reporte = reporte
archivo.save()
return HttpResponseRedirect(self.request.META.get('HTTP_REFERER'))
def form_invalid(self, form):
return self.render_to_response(self.get_context_data(form=form))
мой html
<!--MODAL START-->
<div id="modalForm" class="modal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{titulo}} {{reporte_id}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button>
</div>
<div class="modal-body card-block">
<form method = "post" action="{% url 'reporte_add' %}" id="reporte-form" enctype="multipart/form-data">
{% csrf_token %}
{{ form|crispy }}
{{formset.management_form}}
{% for formset in archivo_formset %}
{% if forloop.counter <= remaining_file_count %}
{{ formset|crispy }}
{% endif %}
{% endfor %}
</form>
<div class="modal-footer">
<button type="submit" form="reporte-form" class="btn btn-primary">Guardar</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
</div>
</div>