crispy-forms: add css class for one of the inputs

前端 未结 6 935
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-17 14:48

In my forms.py I have

[...]
self.helper.layout = Layout(
    Field(\'name\'),
    Field(\'description\'),
)
self.helper.form_class = \'form-hori         


        
相关标签:
6条回答
  • 2020-12-17 15:41

    I've solved it like this:

    Field('name', wrapper_class="col-md-6"),
    
    0 讨论(0)
  • 2020-12-17 15:43

    One way to add a custom css class to a crispy-forms Field would be to wrap it in a Div with a custom css_class attribute:

    from crispy_forms.layout import Layout, Div, Field
    
    self.helper.layout = Layout(
        Div(
            Field('name'), css_class="my_fancy_class_name"
        ),
        Field('description'),
    )
    

    For example, now you can customize your Field with some css:

    .my_fancy_class_name {
        font-size: 200%;  /* You can change the font size */
        color: green;    /* You can change the font color */
        display: none;  /* You can even hide the Field */
    }
    
    0 讨论(0)
  • 2020-12-17 15:45

    Cant you wrap those fields in a div? Doesnt this solve your problem?

    self.helper.layout = Layout(
        Div(Field('name',maxlength=20),css_class = 'controls col-md-8 col-xs-7'),
        Field('description'),
    )
    
    0 讨论(0)
  • 2020-12-17 15:46

    To you helper layout:

    self.helper.layout = Layout(
        Field('name'),
        Field('description'),
    

    add css_class:

    Field('field_name', css_class="controls col-md-8 col-xs-7")
    

    Here is the docs link

    0 讨论(0)
  • 2020-12-17 15:48

    I see two possibilities:

    1. Use CSS

    #div_id_name {
        font-weight: 0.8em;
    }
    

    2. Override the field template

    You can override the field template of your field:

    Field('field_name', template='my_field_template.html')
    

    For a reference field template, see site-packages/crispy_forms/templates/bootstrap3/field.html.

    (3. Waiting)

    There's an open issue on Github for this: https://github.com/maraujop/django-crispy-forms/issues/348

    0 讨论(0)
  • 2020-12-17 15:49

    The only way to get this working is not using some form.helpers.

    My config is

        # from
        self.helper.form_class = 'form-horizontal'
        self.helper.label_class = "col-md-2"
        self.helper.field_class = "col-md-10"
        # -> to
        self.helper.form_class = 'form-vertical'
        #self.helper.label_class = "col-md-2"
        #self.helper.field_class = "col-md-10"
        Fieldset('Address',
                     Div(
                         #I need to set size for every field wrapped in a div
                         Div('tipo_logradouro', css_class="col-md-6"), 
                         Div('logradouro', css_class='col-md-6'),
                         css_class='row'
                     ),
         )
    

    I know this old but I hope it helps someone.

    0 讨论(0)
提交回复
热议问题