Я пытался переопределить виджет Django ClearableFileInput по умолчанию, и у меня возникли проблемы с {% if widget.is_initial %}
, поскольку мой существующий файл неправильно отображается на странице.К этому моменту я не редактировал существующий HTML-код django для входного файла clearablefile, только пытался настроить себя, чтобы иметь возможность сделать это со следующим кодом в файле inventory/custom_clearable_file_input.html
{% if widget.is_initial %}{{ widget.initial_text }}: <a href="{{ widget.value.url }}">{{ widget.value }}</a>{% if not widget.required %}
<input type="checkbox" name="{{ widget.checkbox_name }}" id="{{ widget.checkbox_id }}">
<label for="{{ widget.checkbox_id }}">{{ widget.clear_checkbox_label }}</label>{% endif %}<br>
{{ widget.input_text }}:{% endif %}
<input type="{{ widget.type }}" name="{{ widget.name }}"{% include "django/forms/widgets/attrs.html" %}>
{% if widget.is_initial %}</p>{% endif %}
PerDjango 1.11 doc, переопределение виджетов выполняется следующим образом:
class CustomClearableFileInput(ClearableFileInput):
template_name = 'inventory/custom_clearable_file_input.html'
А затем передается в формы следующим образом:
class BusinessSettingsForm(forms.ModelForm):
business_logo = forms.ImageField(widget = CustomClearableFileInput())
class Meta:
model = BusinessSettings
fields = (
'business_name',
'tax_rate',
'business_logo',
)
widgets = {
'business_name': forms.TextInput(attrs={'class' : 'form-control', 'autofocus':'', 'required':True}),
'tax_rate': forms.NumberInput(attrs={'class' : 'form-control', 'autocomplete': 'off', 'step': "0.01"}),
}
Вот где я запутался.Почему я не могу увидеть свое первоначальное изображение?Если я решу не включать {% if widget.is_initial %}
, я смогу заставить {% if widget.value.url %}
работать и отобразить ссылку на мое изображение, однако {% if widget.initial_text %}
или {% if widget.input_text %}
ничего не отобразят.
Сохранение всего какна странице отображается только кнопка выбора файла, но не отображается ссылка на мой текущий файл или флажок для очистки.Как я могу получить их для отображения?