Задать вопрос
@nurzhannogerbek

Как поменять html шаблон для поля ImageField в форме редактирования?

Здравствуйте! Помогите пожалуйста разобраться.

У меня есть форма редактирования с полем ImageField. По умолчанию Джанго рендорит следующий шаблон (см. ниже). Как правильно поменять шаблон? Я пробовал следующий код, но template_with_initial не работает. Хотя initial_text, input_text и clear_checkbox_label работают. Могу ошибаться, но мне кажется template_with_initial работает только с FileField.

widgets.py:
from django.forms.widgets import ClearableFileInput

class CustomClearableFileInput(ClearableFileInput):
    initial_text = 'Текущее изображение'

    input_text = 'Изменить'

    clear_checkbox_label = 'Очистить'

    template_with_initial = (
        '<span>%(initial_text)s</span>:'
        '<a href="%(initial_url)s">%(initial)s</a>'
        '%(clear_template)s<br/><span>%(input_text)s</span>: %(input)s'
    )

    template_with_clear = '%(clear)s'
    '<label for="%(clear_checkbox_id)s">%(clear_checkbox_label)s</label>'


forms.py:
class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        exclude = ('id',)
        widgets = {
            'image': CustomClearableFileInput
        }


То что выводит Джанго в шаблоне:
Текущее изображение:
<a href="/media/images/2017/08/23/picture.jpg">images/2017/08/23/picture.jpg</a>
Изменить:
<input name="image" id="id_image" type="file">
  • Вопрос задан
  • 652 просмотра
Подписаться 2 Оценить 2 комментария
Решения вопроса 1
@nurzhannogerbek Автор вопроса
Проблему решил следующим образом. После данных настроек Джанго увидел template файл.

settings.py:
INSTALLED_APPS = [
    'django.forms',
]

FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы