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