Django - удаление/скрытие меток для чекбоксов
Я думал, что это будет довольно просто, но я подключился к этому в течение некоторого времени и не могу понять это.
У меня есть флажки множественного выбора в форме модели, которая находится в наборе форм. Все, что я хочу сделать, это удалить метки из флажков. Я могу легко удалить метку из поля, но я не могу понять, как удалить метки из флажков.
Я пытаюсь преобразовать отображение формы в сетку.
Отсюда:
К этому:
Вот код моей формы:
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
},
Так что это заменяет полный шаблон для чекбокса (который оборачивает ввод в метку) только частью ввода.