@awd10
джанго ученик

Как переопределить стиль форм в джанго?

1. Как переопределить шаблон, чтобы по умолчанию использовался только свой вариант при вызове {{form}}, без добавления .as_div каждый раз в шаблоне ?

2. Как добавить CSS класс к обертке html_class_attr ? (кроме варианта добавить в тупую class="myclass" в normal_row)

forms.py

class BaseForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(ModelForm, self).__init__(*args, **kwargs)
        # adding css classes to widgets without define the fields:
        for field in self.fields:
            self.fields[field].widget.attrs['class'] = 'form-input'

    def as_div(self):
        return self._html_output(
            normal_row=u'<div%(html_class_attr)s>%(label)s %(field)s %(help_text)s %(errors)s</div>',
            error_row=u'<div class="error">%s</div>',
            row_ender='</div>',
            help_text_html=u'<div class="hefp-text">%s</div>',
            errors_on_separate_row=False)
  • Вопрос задан
  • 1391 просмотр
Решения вопроса 1
@javedimka
Хочу сока
Чтобы изменить стандартный вид отрисовки формы на твой собственный, можно переопределить метод __str__() формы:
def __str__(self):
    return self.as_div()


Второй вопрос какой-то очень не очень.
html_class_attr - это строка которая генерируется в методе _html_output() на основе каких-то данных, каких - не знаю, надо копать глубже в сорцы, такое в доках не пишут.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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