gpt4 book ai didi

django - 如何使用 Django FileFields 在模板中显示当前文件

转载 作者:行者123 更新时间:2023-12-01 01:22:33 25 4
gpt4 key购买 nike

我有点卡住了,我已经使用 Django 有一段时间了,但我实际上似乎无法找到这个东西。这很奇怪,因为它应该是一件简单的事情。

我一直在谷歌搜索,似乎无法找到解决方案,这可能是因为它是一件简单的事情。

问题是,我有一个 ModelForm,它有一个 FileField,当我用模型的实例渲染这个表单,并且对象包含一个上传的文件时,我想显示当前文件,(如管理员可以),但我似乎不能这样做。

这些技术都不起作用:

{{ form.as_p }}
{{ field.label_tag }}

我一直在管理员模板中四处寻找,但似乎找不到魔法。表单正确呈现对象的所有其他数据

问题 2 是由于上传的文件在呈现带有对象实例的更改表单时未显示,因此当我尝试保存时表单无法验证,因为它对先前上传的文件一无所知。

那么在 Django 中如何处理更改表单中的文件字段,如何显示当前上传的文件,以及如何验证表单。

最佳答案

你看的不够好,解决办法是在contrib/admin/widgets.py中自定义一个widget,也就是这个:

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, value, _('Change:')))
output.append(super(AdminFileWidget, self).render(name, value, attrs))
return mark_safe(u''.join(output))

您可以使用 widgets meta option 来使用这个(或改编的版本)模型表单。

据我所知,您的第二个问题根本不应该存在,即使没有更好的小部件,请告知它在使用自定义小部件后是否仍然存在。

关于django - 如何使用 Django FileFields 在模板中显示当前文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3075201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com