Django EditForm не загружает существующий файл с пользовательским виджетом
В моем Django приложении я создал форму с помощью forms.py. Когда я редактирую эту форму, я не могу увидеть существующие файлы этой формы, да, я установил экземпляр для этой EditForm и я могу видеть данные других текстовых полей, я не могу видеть существующие данные ввода файла. Если я удалю класс, который я добавил в виджет, то я могу видеть данные. Почему так? И как я могу использовать оба виджета и видеть существующие данные? Ниже приведен мой код:
forms.py:
class ContentCreateForm(forms.ModelForm):
text_instruction = forms.FileField(widget=forms.FileInput(attrs={'accept': '.txt', 'class': 'form-control'})) # If I remove this I can see the existing files
course_video = forms.FileField(widget=forms.FileInput(attrs={'accept': 'video/*', 'class': 'form-control'})) # If I remove this I can see the existing files
preview_video = forms.FileField(widget=forms.FileInput(attrs={'accept': 'video/*', 'class': 'form-control'}), required=False) # If I remove this I can see the existing files
resource_file = forms.FileField(widget=forms.FileInput(attrs={'accept': '.pdf', 'class': 'form-control'})) # If I remove this I can see the existing files
class Meta:
model = Content
fields = '__all__'
views.py:
def myView(request, id):
current_content = Content.objects.get(id=id)
form = forms.ContentCreateForm(instance=current_content)
context = {
'form': form,
}
return render(request, 'editForm.html', context)
Я думаю, что проблема здесь в том, что вы не используете поля из вашей модели (вы используете ModelForm
). Мне нужно взглянуть на вашу модель, чтобы быть уверенным, но я подозреваю, что вы пытаетесь сделать что-то вроде этого:
class ContentCreateForm(forms.ModelForm):
class Meta:
model = Content
fields = '__all__'
widgets = {
'course_video' : forms.FileInput(attrs={
'accept': 'video/*',
'class': 'form-control'
},
'preview_video' : etc etc {
})
}
Вид кажется мне нормальным.