Django инстанцирует поле файла с помощью формы модели
Я не могу создать поле файла из формы модели
model.py
class ModelA(models.Model):
image_fileA = ResizedImageField()
pdf_fileB = models.FileField()
pdf_fileC = models.FileField()
forms.py
class FormA(ModelForm):
class Meta:
model = modelA
fields = ['image_fileA', 'pdf_fileB', 'pdf_fileC']
widgets = {
'image_fileA': forms.FileInput(),
'pdf_fileB': forms.FileInput(),
'pdf_fileC': forms.FileInput(),
}
<
def viewA(request, pk):
template = 'app/edit.html'
a = modelA.objects.get(id=pk)
form = FormA(instance=a)
if request.method == 'POST':
form = FormA(request.POST, request.FILES, instance=a)
if form.is_valid():
form.save()
return redirect('page')
context = {'a': a, 'form': form, }
return render(request, template, context)
views.py
edit.html
<form action="" method="POST" enctype='multipart/form-data'>
{% csrf_token %}
{%if a.image_fileA%}
<img src="{{a.image_fileA.url}}">
{{form.group_logo}}
{%else%}Not Available{%endif%}
{% if a.pdf_fileB%}
<a href="{{a.pdf_fileB.url}}"></a>
{{form.pdf_fileB}}
{%else%}Not Available{%endif%}
{% if a.pdf_fileC%}
<a href="{{a.pdf_fileC.url}}"></a>
{{form.pdf_fileC}}
<button type="submit">Save</button>
</form>
Что я пробовал
Мне пришлось использовать if else...~~~ для включения загрузки файла в случае, если файл был недоступен. Я также приложил ссылку URL, чтобы можно было посмотреть загруженные файлы.
Ошибки
Я ожидаю, что все поля будут иметь экземпляры формы, но когда я пытаюсь сохранить форму без редактирования, я получаю следующую ошибку Объект 'File' не имеет атрибута 'content_type'
Поэтому форма сохраняется только тогда, когда все поля отредактированы.
Может кто-нибудь подсказать, где я делаю это неправильно.
Предпочтения
На странице редактирования должны быть видны все данные, прикрепленные к соответствующим полям. Редактирование или не редактирование формы должно успешно сохраняться без ошибок