2009-03-12 4 views
0

Можно ли переопределить имена html полей в формах админов TabularInline, чтобы они не содержали тире?Могу ли я переопределить html_name для поля tabularinline в интерфейсе администратора?

Я пытаюсь применить полученные знания here для создания формы администратора TabularInline, которая имеет функцию автозаполнения.

Это все работает за исключением того, Джанго настаивает на обозначении поля в tabularinline QuerySet как нечто вроде:

[model]_set-[index]-[field] 

Так что, если моя модель TravelLogClient и мой внешний ключ поле компании, поля в HTML-форме для трех записей в tabularinline QuerySet будет:

travellogclient_set-0-company 
travellogclient_set-1-company 
travellogclient_set-2-company 

проблема заключается в том, что не любит Javascript идентификаторы с прочерками в них. Таким образом, javascript терпит неудачу, и автозаполнение не работает.

ЭТО ТОЛЬКО ПРОБЛЕМА С ТАБЛИЧНЫМИ ФОРМАМИ INLINE! Если я использую Jannis' autocomplete example в поле нестандартной формы администратора, он работает просто отлично, потому что имя поля не содержит «..._set-[index]-...» в HTML и javascript.

Вместо того чтобы отправлять патч к исходному коду django, изменяя тире для подчеркивания на contrib.forms.forms.py и contrib.forms.formsets.py, мне пришло в голову, что возможно, что поведение может быть переопределено каким-то образом.

Если это не так, то какой самый простой способ сделать эти штрихи в html_name вместо подчеркивания?

Заранее благодарен!

+0

Как вы пытаетесь получить доступ к этим полям с помощью javascript? –

+0

Именно то, что я думал: имена свойств, содержащие тире, полностью соответствуют JS, просто вам нужно получить доступ к свойствам с помощью объекта ['the-prop'] вместо ошибочного объекта object.the-prop –

ответ

0

Paolo и Guðmundur являются правильными. Я изменил свое использование в javascript в соответствии с предложением Гудмундура, и теперь все работает так, как ожидалось, - не требуется вмешательство джанго.

Извините за психическое отставание ...

Спасибо!