Django: невозможно добавить имя атрибута UPPERCASE в элемент ввода HTML - PullRequest
0 голосов
/ 19 октября 2011

Я пытаюсь использовать библиотеку javascript в django, которая требует некоторых атрибутов для элементов HTML в camelCase. Например, у меня есть модель с полем CharField, например:

expires = models.DateField("Expiration Date", db_index = False, blank = True, null = True, editable = True, help_text = "Something")

Моя ModelForm имеет следующую строку в методе init :

self.fields['expires'].widget.attrs['SomeAttribute'] = "SomeValue"

и после render_to_response выданный HTML выглядит следующим образом:

<input id="id_expires" type="text" name="expires" someattribute="SomeValue">

вместо:

<input id="id_expires" type="text" name="expires" SomeAttribute="SomeValue">

Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Как Исаак указывает вверху, что вы должны быть правы. Внутренние элементы Django, отвечающие за рендеринг вышеперечисленного в django.forms.widgets

return mark_safe(u'<input%s />' % flatatt(final_attrs))

должно дать вам правильный атрибут, который вы ищете. Мне удалось воспроизвести вашу проблему, когда я проверил HTML, отображаемый в Firebug. Кажется, что Firebug строчные буквы имени атрибута, но когда я сделал исходный код представления, он показал как SomeAttribute против someattribute в Firebug (если это действительно то, что вы делаете:))

0 голосов
/ 19 октября 2011

Я не смог найти ничего в кодовой базе форм django, из которого можно предположить, что в этом виноват django. Как вы обрабатываете форму? Пожалуйста, смотрите мою сессию оболочки для моих деталей.

>>> from django import forms
>>> class F(forms.Form):
...  a = forms.CharField()
... 
>>> f = F()
>>> f.as_p()
u'<p><label for="id_a">A:</label> <input type="text" name="a" id="id_a" /></p>'
>>> f.fields['a'].widget.attrs
{}
>>> f.fields['a'].widget.attrs['dERP'] = 'ddf'
>>> f.as_p()
u'<p><label for="id_a">A:</label> <input id="id_a" type="text" name="a" dERP="ddf" /></p>'
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...