2015-07-05 6 views
1

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

<input name="switch-labelText" type="checkbox" data-label-text="Label"> 

Я использую хрустящие формы, и я могу видеть, что я могу действительно добавить атрибут с помощью поля следующим образом:

Field('field_name', css_class="black-fields") 

все это имеет смысл для меня, но я не могу показаться, чтобы добавить данные-метки-текст. Итак, мой вопрос в том, могу ли я создать пользовательский атрибут с хрустящими формами?

Вот моя форма:

class InstanceCreationForm(forms.Form): 
    some_field = forms.BooleanField(required=False) 
    some_field2 = forms.BooleanField(required=False) 
    some_field3 = forms.BooleanField(required=False) 

    def __init__(self, *args, **kwargs): 
     super(InstanceCreationForm, self).__init__(*args, **kwargs) 
     self.helper = FormHelper() 
     self.helper.form_show_labels = False 
     self.helper.layout = Layout(
      #This is a syntax error 
      Field('some_field', data-label-text="whatever") 
     ) 
     self.helper.add_input(Submit('submit', 'Submit')) 

ответ

3

От the docs:

Если вы хотите установить HTML атрибуты, со словами, разделенных дефисом, как data-name, поскольку Python не поддерживает дефис ключевого слова аргументы и дефисы являются обычным обозначением в HTML, символы подчеркивания будут переведены в дефисы, поэтому вы бы сделали: Field('field_name', data_name="whatever")

Так что вам нужно использовать ключевое слово data_label_text.

Field('some_field', data_label_text="whatever") 
+0

Ничего себе, я должен прочитать, что линия, как в 20 раз, я даже посмотрел на исходный код и увидел, что найти замену, так что извините, спасибо большое за помощь Я так глупо. – bink1time

0

От исходного кода.

# We use kwargs as HTML attributes, turning data_id='test' into data-id='test' 
    self.attrs.update(dict([(k.replace('_', '-'), conditional_escape(v)) for k, v in kwargs.items()])) 

он кладет все kwargs в ваш элемент формы, поэтому вы можете сделать что-то вроде.

Field('YOUR_FIELD_NAME', data_label_text="Label") 
Смежные вопросы