Удалить этикетки в Django Crispy Forms

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

Я дошел до этого:

self.fields['field'].label = ""

Но это не очень красивое решение.


person Ron    schedule 13.07.2012    source источник


Ответы (6)


Вы можете отредактировать шаблон field.html: https://github.com/maraujop/django-crispy-forms/blob/dev/crispy_forms/templates/bootstrap/field.html#L7

Добавьте в форму атрибут FormHelper, который управляет отображением метки, и используйте его в этом шаблоне if. Пользовательские атрибуты FormHelper еще официально не задокументированы, потому что у меня не было времени, но я говорил о них в своем выступлении, вот слайды: https://speakerdeck.com/u/maraujop/p/django-crispy-forms

person maraujop    schedule 17.07.2012

Просто делать:

self.helper.form_show_labels = False

Чтобы удалить все ярлыки.

person Glyn Jackson    schedule 09.07.2014
comment
Скрывает ярлык для флажков и переключателей :( - person CpILL; 14.10.2016
comment
self.fields['MYFIELD'].label = False чтобы отключить для определенного поля - person Yannic Hamann; 20.04.2018
comment
Я попробовал как form_show_labels = False, так и переопределить конкретное поле с помощью self.fields['validation_CGU'].label = True, и это не сработало, похоже, глобальное правило имеет приоритет, очень плохо - person Vadorequest; 10.10.2018
comment
Решение @YannicHamann сработало для меня. Я думаю, что это нужно выделить как отдельный ответ. - person ; 04.03.2019
comment
Обратите внимание, что это работает только для Bootstrap согласно документам. - person Greg Kaleka; 26.07.2019
comment
@Vadorequest Посмотрите код для отображения метки в определенном поле, когда все имеет значение False. Смотрите мой ответ - person Aman Gupta; 11.06.2021

Работает с Boostrap ( см. документацию)

В вашей форме:

from crispy_forms.helper import FormHelper
from django import forms

class MyForm(forms.Form):
    [...]
    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_show_labels = False 

В вашем шаблоне:

<form method='POST' action=''>{% csrf_token %}
{% crispy form %}
<input type='submit' value='Submit' class='btn btn-default'>
</form>
person Lucas B    schedule 09.07.2015
comment
спасибо - все работает как описано. Я добавил функцию в свою форму, и она просто сработала - person Adrian; 19.02.2021

если вы хотите удалить только некоторые метки из ввода, то явно не указывайте имя метки в определении модели, т.е.:

field = models.IntegerField("",null=True)
person Alist    schedule 04.02.2014

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

Код ниже работает в django 2.1.1.

# this class would go in forms.py
class SectionForm(forms.ModelForm):
    # add a custom field for calculation if desired
    txt01 = forms.CharField(required=False)

    def __init__(self, *args, **kwargs):
        ''' remove any labels here if desired
        '''
        super(SectionForm, self).__init__(*args, **kwargs)

        # remove the label of a non-linked/calculated field (txt01 added at top of form)
        self.fields['txt01'].label = ''

        # you can also remove labels of built-in model properties
        self.fields['name'].label = ''

    class Meta:
        model = Section
        fields = "__all__"

Я не понимаю, в чем проблема у ОП с фрагментом кода, который он показал, за исключением того, что он не поместил строку кода в нужное место. Это кажется лучшим и самым простым решением.

person MangoLassi    schedule 22.10.2018

Чтобы удалить все ярлыки:

self.helper.form_show_labels = False

Чтобы показать конкретную метку когда все False:

HTML('<span>Your Label</span>')

Чтобы отключить метку для определенного поля, когда все верно

self.fields['fieldName'].label = True

Пример:

     Row(
            HTML('<span> Upolad Government ID (Adhar/PAN/Driving Licence)</span>'),
            Column('IdProof',css_class='form-group col-md-12 mb-0'),
            css_class='form-row'
        ),
person Aman Gupta    schedule 11.06.2021