Как сделать понятный ввод файла в django в режиме обновления

#django #jasny-bootstrap

Вопрос:

В моем приложении django у меня есть модель человека с полем файла «identification_image_front». Я также определил форму модели, используя виджет Fileinput для этого поля. Для шаблона я использую плагин jasny-bootstrap для представления ввода файла с параметрами «Выбрать файл», «Удалить» и «изменить», Используя следующий код, возможно сохранить файл при создании нового рабочего в CreateView. Но при обновлении существующего работника с помощью UpdateView файловый ввод всегда пуст. Невозможно проверить, есть ли у работника прикрепленный к нему файл, или удалить файл из существующего работника. Есть ли какой-либо способ загрузить файл в файловый ввод и включить опцию «удалить», чтобы я мог удалить или изменить файл существующего работника? Возможно, есть другой способ сделать это с помощью других плагинов или HTML-кода. Я открыт для предложений

Поле ввода пусто в представлении обновления
В окне createview можно удалить файл

Это мой код

 class WorkerModel(BaseModel):

    name = models.CharField(verbose_name=_("Nombre "), max_length=50,  blank=False, null=False)
    surname1 = models.CharField(verbose_name=_("Primer apellido"), max_length=50,  blank=False, null=False)
    surname2 = models.CharField(verbose_name=_("Segundo apellido"), max_length=50,  blank=False, null=False)

    identification_image_front = models.FileField(verbose_name=_("Foto carnet frontal"), upload_to="app_person_identification_image_front",
                                                null=True, blank=True)

 class WorkerForm(forms.ModelForm):
    
        class Meta:
            model = WorkerModel
            exclude = ("id",)
            widgets = {
                
                'name':forms.TextInput(attrs={'class': 'form-control'}),
                'surname1' : forms.TextInput(attrs={'class': 'form-control'}),
                'surname2' : forms.TextInput(attrs={'class': 'form-control'}),
                'identification':forms.TextInput(attrs={'class': 'form-control'}),
                'identification_image_front': forms.FileInput(attrs={'accept': 'application/pdf, image/png, image/jpeg'}),
                }
 

в шаблоне

 <div>
      {{ form.identification_image_front.label }}
  </div>
  <div class="fileinput fileinput-new input-group" data-provides="fileinput">
    <div class="form-control" data-trigger="fileinput">
      <span class="fileinput-filename"> </span>
    </div>
    <span class="input-group-append">
      <span class="input-group-text fileinput-exists" data-dismiss="fileinput">
        Remove
      </span>
      <span class="input-group-text btn-file">
        <span class="fileinput-new">Select file</span>
        <span class="fileinput-exists">Change</span>
        {{ form.identification_image_front }}
        
      </span>
    </span>
  </div>
 

Определение представлений

 class WorkerCreateView(LoginRequiredMixin, CreateView):
    model = WorkerModel
    #group_required = [u'Auxiliar Legal', 'Jefe de la Oficina Local', 'Jefe de la RBRP']
    context_object_name = 'obj'
    template_name = 'app/worker/worker_form.html'
    form_class = WorkerForm

    def get_success_url(self):
        return reverse_lazy("app:worker_detail", kwargs={"pk":self.object.id})

class WorkerUpdateView(LoginRequiredMixin, UpdateView):
    model = WorkerModel
    #group_required = [u'Auxiliar Legal', 'Jefe de la Oficina Local', 'Jefe de la RBRP']
    context_object_name = 'obj'
    template_name = 'app/worker/worker_form.html'
    form_class = WorkerForm
   
    def get_success_url(self):
        return reverse_lazy("app:worker_detail", kwargs={"pk":self.object.id})