Интересный вопрос. HTML 4.01 также запрещает accesskey
в select
.
Я полагаю, что Краткий ответ: не в стандартном Django.
Намного более длинный ответ: Я посмотрел на код в django/forms/fields.py
и .../widgets.py
, и метка обрабатывается строго как строка (принудительно smart_unicode()
). На ум приходят четыре возможных решения, первые три не очень приятные:
Игнорировать ошибку проверки. Я ненавижу это делать, но иногда это необходимый клудж. Большинство браузеров гораздо слабее, чем DTD, в том, что они позволяют. Если вы можете заставить работать ключ доступа, даже если он технически не в том месте, это может быть самый простой способ.
Поймать вывод шаблона и выполнить некрасивый поиск и замену. (Blech!)
Добавление новых функций в код виджетов / форм с помощью MonkeyPatching it. MonkeyPatch django.forms.fields.Field
чтобы поймать и сохранить новый аргумент (label_attrs
?). MonkeyPatch метод label_tag()
forms.forms.BoundField
для работы с новым значением widget.label_attrs
.
Я намеренно не собираюсь более подробно рассказывать об этом. Если вы достаточно хорошо понимаете код, чтобы MonkeyPatch, то вы достаточно умны, чтобы понять опасности, связанные с этим.
Внести те же функциональные изменения, что и в # 3, но сделать это как отправленный патч для базы кода Django. Это лучший долгосрочный ответ для всех, но он также наиболее эффективен для вас.
Обновление: Ссылка Йони Самлана на пользовательский фильтр (http://www.djangosnippets.org/snippets/693/) работает, если вы сами генерируете тег <label>
. Мои ответы направлены на то, чтобы по-прежнему использовать всю мощь форм, но пытаясь настроить полученный результат <label>
.