Как переименовать в настоящее время, очистить и изменить метки в ImageField Django

Я относительно новичок в джанго. Я использую ImageForm, чтобы получить путь к изображению от пользователя.

class EditProfileForm(ModelForm):
    username = CharField(label='User Name', widget=TextInput(attrs={'class': 'form-control'}), required=True)
    image = ImageField(label='Select Profile Image',required = False)

Он показывает виджет изображения следующим образом:

введите здесь описание изображения

Я хочу переименовать ярлыки - Сейчас, Очистить и Изменить. [По сути, вся моя страница не имеет нижнего регистра, поэтому я хотел сделать текст этих меток также строчными буквами, как сейчас, очистить и изменить].

Есть какой-либо способ сделать это?


person    schedule 31.07.2014    source источник


Ответы (2)


У вас есть много вариантов.

Вы можете проявить творческий подход, используя CSS, чтобы сделать текст строчными.

или вы можете изменить текст, отправляемый в браузер, в python/django.

В конечном счете виджет полей формы — это то, что управляет выводом html в представление через функцию, называемую render(). Функция render() для виджета «ClearableFileInput» использует некоторые переменные из класса виджетов.

Вы можете создать свой собственный класс, являющийся подклассом класса ClearableFileInput, и заменить свои собственные текстовые строки в нижнем регистре. то есть:

from django.forms.widgets import ClearableFileInput

class MyClearableFileInput(ClearableFileInput):
    initial_text = 'currently'
    input_text = 'change'
    clear_checkbox_label = 'clear'

class EditProfileForm(ModelForm):
    image = ImageField(label='Select Profile Image',required = False, widget=MyClearableFileInput)
person Rel    schedule 31.07.2014

Стряхните пыль с этого старого вопроса, если вам нужно что-то более простое, чем создание подкласса ClearableFileInput, создание файла widgets.py и т. д.

Если вы уже создали подкласс ModelForm в файле forms.py, просто измените __init__() этой формы.

Например:

class EditProfileForm(ModelForm):
    username = CharField(label='User Name', widget=TextInput(attrs={'class': 'form-control'}), required=True)
    image = ImageField(label='Select Profile Image',required = False)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['image'].widget.clear_checkbox_label = 'clear'
        self.fields['image'].widget.initial_text = "currently"
        self.fields['image'].widget.input_text = "change"
person Jarad    schedule 03.03.2021