如何使用Django FileFields在模板中显示当前文件
发布时间:2020-12-20 11:14:13 所属栏目:Python 来源:网络整理
导读:我有点卡住,我一直在使用Django一段时间了,但实际上我似乎无法找到这个东西.这很奇怪,因为它应该是一件简单的事情. 我一直在谷歌搜索,似乎无法找到解决方案,这可能是因为它是一件简单的事情. 问题是,我有一个ModelForm,它有一个FileField,当我用模型实例渲染
我有点卡住,我一直在使用Django一段时间了,但实际上我似乎无法找到这个东西.这很奇怪,因为它应该是一件简单的事情.
我一直在谷歌搜索,似乎无法找到解决方案,这可能是因为它是一件简单的事情. 问题是,我有一个ModelForm,它有一个FileField,当我用模型实例渲染这个表单,并且该对象包含一个上传文件时,我想显示当前文件,(就像管理员一样),但我似乎无法做到这一点. 这些技术都不起作用: {{ form.as_p }} {{ field.label_tag?}} 我一直在管理员模板中搜索,但似乎无法找到魔法.该表单正确呈现对象的所有其他数据 问题2是由于在使用对象实例呈现更改表单时未显示上载文件,因此表单在我尝试保存时无法验证,因为它对先前上载的文件一无所知. 那么如何处理Django中的更改表单中的文件字段,如何显示当前上载的文件以及如何验证表单. 解决方法
你没有好好环顾四周,解决方案是contrib / admin / widgets.py中的一个自定义小部件,即这个:
class AdminFileWidget(forms.FileInput): """ A FileField Widget that shows its current value if it has one. """ def __init__(self,attrs={}): super(AdminFileWidget,self).__init__(attrs) def render(self,name,value,attrs=None): output = [] if value and hasattr(value,"url"): output.append('%s <a target="_blank" href="%s">%s</a> <br />%s ' % (_('Currently:'),value.url,_('Change:'))) output.append(super(AdminFileWidget,self).render(name,attrs)) return mark_safe(u''.join(output)) 您可以使用widgets meta option的ModelForms来使用此(或改编版本). 据我所知,你的第二个问题根本就不存在,即使没有更好的小部件,也要知道它是否在使用自定义小部件后仍然存在. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |