2015-06-15 1 views
0

Я борюсь с проблемой рендеринга, используя Django Grappelli и Django Multiselectfield вместе на админ-сайте. Флажок для наклейки криво:Django Admin form - Как переопределить класс MultiSelectField?

issue

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, где вы определяете эту форму. При определении формы с помощью класса формы, то используйте:

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

Если вы используете модели затем добавить виджет в колонку. https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#specifying-widgets-to-use-in-the-form-with-widgets

Alternate: Для простоты можно использовать Java скрипт на этой странице. Выберите класс checkbox и измените его на vCheckboxLabel. Но это не рекомендуется.