Атрибуты формы не отображаются на веб-странице - PullRequest
0 голосов
/ 26 апреля 2020

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

Я надеюсь установить bootstrap классов, поэтому я хотел бы, если это возможно.

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

    first_name = models.CharField(max_length=200, default='')
    surname = models.CharField(max_length=200, default='')
    dob = models.DateTimeField('Date of birth (mm/dd/yyyy)', null=True, default=now)
    preferred_subjects = models.CharField('Are there subjects you would prefer doing?', max_length=200, default='')
class PersonalInformationForm(forms.ModelForm):

    OPTIONS = (
        ("ANI", "Animals"),
        ("ART", "Art"),
        ("COM", "Communication"),
    )
    preferred_subjects = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(
        attrs={
            'class' : 'not working',
            'id' : 'not working'
        }
    ), choices=OPTIONS)

    class Meta:
        model = PersonalInformation

        fields = ['first_name', 'surname', 'dob', 'preferred_subjects']
        widgets = {
            'dob': DatePickerInput(
                options={
                    "format": "MM/DD/YYYY",
                    "showClose": False,
                    "showClear": False,
                    "showTodayButton": False,
                }
            ),
        }

Спасибо.

1 Ответ

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

Вы можете попробовать обновить атрибуты поля формы при инициализации.

class PersonalInformationForm(forms.ModelForm):

OPTIONS = (
    ("ANI", "Animals"),
    ("ART", "Art"),
    ("COM", "Communication"),
)
preferred_subjects = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), choices=OPTIONS)

class Meta:
    model = PersonalInformation

    fields = ['first_name', 'surname', 'dob', 'preferred_subjects']
    widgets = {
        'dob': DatePickerInput(
            options={
                "format": "MM/DD/YYYY",
                "showClose": False,
                "showClear": False,
                "showTodayButton": False,
            }
        ),
    }

def __init__(self, request, *args, **kwargs):
    super(PersonalInformationForm, self).__init__(*args, **kwargs)
    self.fields['preferred_subjects'].widget.attrs.update({'class': 'form-control', 'placeholder': 'First Name'})

РЕДАКТИРОВАТЬ:

preferred_subjects = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), choices=OPTIONS)

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

class Meta:
    model = PersonalInformation

    fields = ['first_name', 'surname', 'dob', 'preferred_subjects']
    widgets = {
        'dob': DatePickerInput(
            options={
                "format": "MM/DD/YYYY",
                "showClose": False,
                "showClear": False,
                "showTodayButton": False,
            }
        ),
    }

, если это не работает, рассмотрите возможность использования «SelectMultiple» вместо «CheckboxSelectMultiple»

forms.MultipleChoiceField(widget=forms.SelectMultiple(), choices=OPTIONS)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...