Django - удаление/скрытие меток для чекбоксов

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

У меня есть флажки множественного выбора в форме модели, которая находится в наборе форм. Все, что я хочу сделать, это удалить метки из флажков. Я могу легко удалить метку из поля, но я не могу понять, как удалить метки из флажков.

Я пытаюсь преобразовать отображение формы в сетку.

Отсюда:

enter image description here

К этому:

enter image description here

Вот код моей формы:

    class ResourceEditAddForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.portfolio = kwargs.pop('portfolio')
        super(ResourceEditAddForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_show_labels = False 

        self.fields["portfolio"].initial = self.portfolio
        self.fields["portfolio"].required = False
        self.fields["skills"].queryset = self.portfolio.getSkills()

    class Meta:
        model = Resource
        fields = ['portfolio',
                  'name', 
                  'skills', 
                  'pct_availability', 
                  'cost_per_day', 
                  'email',
                  'timezone',
                  'update_request_time',
                  'calendar', 
                  'start_date', 
                  'end_date']
        widgets = {
            'portfolio': forms.HiddenInput(),
            'start_date': DateInput(),
            'end_date': DateInput(),
            'update_request_time': TimeInput(),
            'skills': forms.CheckboxSelectMultiple(),
        }


ResourceEditAddFormSet = modelformset_factory(
            Resource,
            form=ResourceEditAddForm, 
            extra=0
)

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

Если кто-нибудь может подсказать мне, как скрыть ярлыки "анимация", "искусство" и т.д. рядом с чекбоксами в формах, css или что-то еще, буду очень признателен.

Вы можете просто скрыть свою метку из models.py. Ярлыки на форме появляются из атрибутов verbose_name:

class Resource(models.Model):
    skills = models...(...,verbose_name="")

или

попробуйте это в функции ResourceEditAddForm __init__:

def __init__(self, *args, **kwargs):
    ...
    self.fields['skills '].label = ''
    ...

Похоже, я решил эту проблему, немного изменив виджет:

    skills_widget = forms.CheckboxSelectMultiple
    skills_widget.option_template_name = "django/forms/widgets/input.html"
    model = Resource
    fields = ['portfolio',
              'name', 
              'skills', 
              'end_date']
    widgets = {
        'portfolio': forms.HiddenInput(),
        'skills': skills_widget
    },

Так что это заменяет полный шаблон для чекбокса (который оборачивает ввод в метку) только частью ввода.

Вернуться на верх