Форма администратора Django - Как переопределить класс MultiSelectField?

Я борюсь с проблемой рендеринга, используя Django Grappelli и Django Multiselectfield вместе в админ-сайте. Метки флажков смещены:

вопрос

Grappelli определяет два CSS-класса:

.aligned label {
    display: block; float: left;
    padding: 0 10px 6px 0;
    width: 120px;
}
.aligned .vCheckboxLabel {
    display: inline; float: none; clear: both;
    margin: 0 0 0 10px; padding: 0;
}

Если я изменю класс флажка на ".vCheckboxLabel" в консоли браузера, метки будут выровнены правильно, и проблем не возникнет. Тем не менее, я не могу на всю жизнь найти, как установить класс в шаблоне администратора.

С помощью {% if field.is_checkbox %} в административном шаблоне Django не работает, потому что это многоэлементное поле, которое вместо этого отображается как список флажков в {{ field.field }},

Как я могу указать или переопределить класс для флажков MultiSelectField в шаблоне или в другом месте?

1 ответ

Решение

Добавьте vCheckboxLabel в класс Model или Form, где вы определяете эту форму. Если вы определяете форму с помощью класса Form, используйте:

myfield = forms.BooleanField(widget=forms.CheckboxInput(attrs={'class':'vCheckboxLabel'}))

Если вы используете модели, то добавьте виджет в столбец. https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/

Альтернатива: для простоты вы можете использовать java-скрипт на этой странице. Выберите класс флажка и измените его на vCheckboxLabel. Но это не рекомендуется.

Другие вопросы по тегам