Переопределение Django ClearableFileInput - PullRequest
0 голосов
/ 17 октября 2018

Я пытался переопределить виджет 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 %} ничего не отобразят.

Сохранение всего какна странице отображается только кнопка выбора файла, но не отображается ссылка на мой текущий файл или флажок для очистки.Как я могу получить их для отображения?

...