问题描述
在我的 django 应用程序中,我有一个带有文件字段“identification_image_front”的人物模型。我还使用 Fileinput 小部件为该字段定义了一个 ModelForm。对于模板,我使用 jasny-bootstrap 插件来表示带有“选择文件”、“删除”和“更改”选项的文件输入 在 CreateView 中创建新工作时,可以使用以下代码保存文件。但是在使用 UpdateView 更新现有工作人员时,文件输入始终为空。无法查看 Worker 是否附加了文件,也无法从现有的 Worker 中删除该文件。有什么方法可以在 fileinput 中加载文件并启用“删除”选项,以便我可以删除或更改现有工作人员的文件? 也许还有另一种方法可以使用其他插件或 HTML 代码来做到这一点。我愿意接受建议
这是我的代码
class WorkerModel(BaseModel):
name = models.CharField(verbose_name=_("Nombre "),max_length=50,blank=False,null=False)
surname1 = models.CharField(verbose_name=_("Primer apellido"),null=False)
surname2 = models.CharField(verbose_name=_("Segundo apellido"),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 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})
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)