Crispy-Forms: лучший контроль над css-боксом внутри CheckboxSelectMultiple - PullRequest
0 голосов
/ 25 февраля 2019

Я использую формы Cripsy и у меня есть ModelMultipleChoiceField, использующий CheckboxSelectMultiple.Однако, чекбоксы отображаются в стандартных чекбоксах, и мне нужно добавить некоторые css в поле чекбокса ('custom-control-input'), чтобы они отображались, как и остальные мои загрузочные чекбоксы.

Есть идеи, с чего начать?

class CustomPermissionMultipleChoiceField(forms.ModelMultipleChoiceField):
    def label_from_instance(self, obj):
        return "%s" % obj.name


class UserPersonalInfoEdit(forms.ModelForm):
    permission_codename_list = (
        'can_view_admin', 'change_retailer', 'change_website', 'change_rating', 'change_contract',
        'view_contract',
        )
    user_permissions = CustomPermissionMultipleChoiceField(
        required=False, widget=forms.CheckboxSelectMultiple,
        queryset=Permission.objects.filter(codename__in=permission_codename_list))
    class Meta:
        model = CustomUser
        fields = ['first_name', 'last_name', 'email', 'username', 'user_permissions']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_method = 'POST'
        self.fields['first_name'].required = True
        self.fields['last_name'].required = True
        self.fields['email'].required = True
        self.fields['username'].help_text = None
        self.fields['is_active'].help_text = None
        self.helper.layout = Layout(
            Row(
                Column('first_name', css_class='form-group col-md-4 mb-0'),
                Column('last_name', css_class='form-group col-md-4 mb-0'),
                Column('username', css_class='form-group col-md-4 mb-0'),
                ),
            Row(
                Column('email', css_class='form-group col-md-4 mb-0'),
                ),
            HTML('<hr>'),
            Row(
                Column('user_permissions', css_class='form-group col-md-4 mb-0'),
                ),
            HTML('<hr>'),
            Submit('submit', 'Save'),
            HTML('<a class="btn btn-primary" href="{% url "core:user_list" %}" role="button">Close</a>')
            )
...