如何隐藏 django 中的复选框ClearableFileInput
。我有一个表格,我要隐藏复选框,这样如果你想更改,你必须上传一个新的,因为它是必填字段。
问问题
1765 次
2 回答
1
如果表单使用ImageField则使用FileInput小部件而不是ClearableFileInput
class Meta:
widgets = {
'field_name': forms.FileInput,
}
于 2013-07-09T17:13:23.443 回答
1
好的,您可以使用 FileInput,但您将隐藏复选框和“当前:path_to_file”两者。
仅隐藏复选框的一种解决方案是继承 ClearableFileInput 小部件,这样:
#widgets.py
from django.forms.widgets import FileInput
from django.utils.translation import ugettext_lazy
from django.utils.html import format_html
from django.utils.encoding import force_text
from django.utils.safestring import mark_safe
class NotClearableFileInput(FileInput):
initial_text = ugettext_lazy('Currently')
input_text = ugettext_lazy('Change')
template_with_initial = '%(initial_text)s: %(initial)s <br />%(input_text)s: %(input)s'
url_markup_template = '<a href="{0}">{1}</a>'
def render(self, name, value, attrs=None):
substitutions = {
'initial_text': self.initial_text,
'input_text': self.input_text,
}
template = '%(input)s'
substitutions['input'] = super(NotClearableFileInput, self).render(name, value, attrs)
if value and hasattr(value, "url"):
template = self.template_with_initial
substitutions['initial'] = format_html(self.url_markup_template,
value.url,
force_text(value))
return mark_safe(template % substitutions)
现在您可以在表单中使用此小部件:
widgets = {
'field_name': widgets.NotClearableFileInput,
}
你会得到这样的结果:
于 2013-08-28T21:47:16.057 回答