Django форма, содержащая различные типы полей - PullRequest
1 голос
/ 28 апреля 2020

Я хочу добавить MultipleChoiceField с виджетом CheckboxSelectMultiple к модели / форме, содержащей другие типы ввода. Мне интересно, как я могу сделать это и добавить классы для всего MultipleChoiceField, а также классы для каждого из вариантов (для bootstrap). Я попытался добавить класс ко всему MultipleChoiceField, используя:

preferred_subjects.widget.attrs.update({'class': 'form-control'})

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

{{ form|crispy }}

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

{% for option in fieldset %}

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

Вот мой код:

class PersonalInformation(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    first_name = models.CharField(max_length=200, default='')
    dob = models.DateTimeField('Date of birth (mm/dd/yyyy)', null=True, default=now)
    subjects = model.CharField(max_length=200, default='')
class PersonalInformationForm(forms.ModelForm):

    SUBS = (
        ('MATH', 'Maths'),
        ('ENG', 'English'),
    )

    subjects = forms.MultipleChoiceField(choices=SUBS, widget=forms.CheckboxSelectMultiple())

    class Meta:
        model = PersonalInformation

        fields = ['first_name', 'gender', 'subjects']

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

Большое спасибо

1 Ответ

0 голосов
/ 28 апреля 2020

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

Эта ссылка поможет вам. Также обратите внимание, что вы можете добавить дополнительный атрибут HTML, такой как класс, стиль или заполнитель, в самом определении формы.

Пример:

<div class="form-row">
<div class="form-group col-md-6">
 {{ form.first_name|as_crispy_field }}
</div>
<div class="form-group col-md-6">
  {{ form.subjects|as_crispy_field }}
</div>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...