2015-08-19 2 views
1

Когда Джанго создает форму идентификатора для входа является следующей:изменение идентификатора элемента ввода формы в Джанго, когда он создал

<input id="id_name"..../> 

Как изменить идентификатор, чтобы, скажем, «тест»?

Должно быть как-то в форме.py, правильно?

class ReviewForm (forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(ReviewForm, self).__init__(*args, **kwargs) 
     self.fields['location']=forms.CharField(label='', required=False) 
     self.fields['review']=forms.CharField(label='', required=False) 

ответ

2

При создании экземпляра вашей формы, вы хотите назвать это с auto_id набора ключевых слов в строку с форматом символа «% S», который будет заменен на имя поля.

Итак, вы хотите сделать это:

ReviewForm(auto_id="test_%s")

И ваши идентификаторы будут сгенерированы с test_ в качестве префикса, за которым следует имя поля.

Прямая от Джанго 1.8 Docs:

Используйте auto_id аргумент конструктору формы для управления поведением идентификатор и ярлык.

...

Если auto_id установлен на строку, содержащей формат символ «% S», то выходная форма будет включать в себя тег, и будет генерировать атрибуты идентификаторов на основе форматной строки. Например, для строки формата «field_% s» поле с именем subject получит значение id «field_subject».

https://docs.djangoproject.com/en/1.8/ref/forms/api/#configuring-form-elements-html-id-attributes-and-label-tags

+0

действительно нуб вопрос, где я могу создать экземпляр формы? – Tom

+0

Вы создаете экземпляр объекта в своем представлении. Я бы рекомендовал, чтобы документация Django хорошо читалась. Вот введение в формы: https://docs.djangoproject.com/en/1.8/topics/forms/ –

+0

ОК спасибо, похоже, что вы не можете полностью управлять идентификационным именем – Tom

0

Я нашел способ сделать это, объяснил here

[class ReviewForm (forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(ReviewForm, self).__init__(*args, **kwargs) 
     self.fields\['location'\]=forms.CharField(widget=forms.TextInput(attrs={'id':'myField'}),label='', required=False) 
     self.fields\['review'\]=forms.CharField(widget=forms.TextInput(attrs={'id':'myField'}),label='', required=False) 
Смежные вопросы