使用materialize生成django表单时出错

使用materialize生成django表单时出错,django,Django,当我使用模板填写表单时,我不能使用复选框,因为它们显示为禁用状态,我无法选择它们,并且密码如果不是简单的文本,也不会以散列形式保存 我有一个带有AbstractUser和signals的用户模型的表单代码,用于创建多个角色: class User(AbstractUser): is_administrator = models.BooleanField(default=False) is_satellite = models

当我使用模板填写表单时,我不能使用复选框,因为它们显示为禁用状态,我无法选择它们,并且密码如果不是简单的文本,也不会以散列形式保存

我有一个带有AbstractUser和signals的用户模型的表单代码,用于创建多个角色:

            class User(AbstractUser):
            is_administrator = models.BooleanField(default=False)
            is_satellite = models.BooleanField(default=False)

            def get_administrator(self):
                administrator = None
                if hasattr(self, 'administrator'):
                    administrator = self.administrator
                return administrator

            def get_satellite(self):
                satellite = None
                if hasattr(self, 'satellite'):
                    satelite = self.satellite
                return satellite

            def __str__(self):
                return '%s %s' % (self.first_name, self.last_name)

            class Meta:
                db_table = 'auth_user'


        class Administrator(models.Model):
            user = models.OneToOneField(User, on_delete=models.CASCADE)
            business_name = models.CharField(max_length=30)


        class Satellite(models.Model):
            user = models.OneToOneField(User, on_delete=models.CASCADE)
            business_name = models.CharField(max_length=30)


        @receiver(post_save, sender=settings.AUTH_USER_MODEL)
        def assign_role(sender, instance, **kwargs):
            if instance.is_administrator:
                administrator = Administrator(user=instance)
                administrator.save()
            elif instance.is_satellite:
                satellite = Satellite(user=instance)
                satellite.save()
表格如下:

        from django import forms
        from .models import (
            User,
        )


        class UserForm(forms.ModelForm):
            class Meta:
                model = User
                fields = ['username', 'first_name', 'last_name', 'email',
                          'password', 'is_active', 'is_administrator', 
                          'is_satelite']
                labels = {
                    'username': 'Username',
                    'first_name': 'Name',
                    'last_name': 'Surname',
                    'email': 'Email',
                    'password': 'Password',
                    'is_active': 'State',
                    'is_administrator': 'Administrator',
                    'is_satellite': 'Satellite',
                },
                widgets = {
                    'username': forms.TextInput(
                        attrs={
                            'placeholder': 'Username',
                            'id': 'username'
                        }
                    ),
                    'first_name': forms.TextInput(
                        attrs={
                            'placeholder': 'Name',
                            'id': 'first_name'
                        }
                    ),
                    'last_name': forms.TextInput(
                        attrs={
                            'placeholder': 'Surname',
                            'id': 'last_name'
                        }
                    ),
                    'email': forms.EmailInput(
                        attrs={
                            'placeholder': 'Email',
                            'id': 'email'
                        }
                    ),
                    'password': forms.PasswordInput(
                        attrs={
                            'placeholder': 'Password',
                            'id': 'password'
                        }
                    ),
                     'is_active': forms.CheckboxInput(
                    attrs={
                        'placeholder': 'State',
                        'id': 'is_active'
                    }
                ),
                'is_administrator': forms.CheckboxInput(
                    attrs={
                        'placeholder': 'state',
                        'id': 'is_administrator'
                    }
                ),
                'is_satellite': forms.CheckboxInput(
                    attrs={
                        'placeholder': 'State',
                        'id': 'is_satellite'
                    }
                ),
我使用模板来使用整个表单:

        <div class="card">
            <div class="card-content">
                <div class="card-title">New User Registration</div>
                <div class="row">
                    <form class="col s12" method="POST">
                        {% csrf_token %}
                        {{ form.as_p }}
                        <a href="{{ request.META.HTTP_REFERER }}" class="waves-effect waves-green btn-flat">Cancel</a>
                        <button type="submit" class="waves-effect waves-green btn-flat right"><i
                                class="material-icons left">how_to_reg</i>Register</button>
                    </form>
                </div>
            </div>
        </div>

新用户注册
{%csrf_令牌%}
{{form.as_p}}
如何注册

当表单生成时,该复选框没有给我激活或停用它的选项,但只有在我应用materialize样式时才会发生,因为没有它们,我不会在模板中生成任何错误,我获得的密码没有其格式,并将其视为任何文本,生成时没有其哈希。

您可以尝试添加密码从django表单添加密码表单字段,如下所示

password = forms.CharField(widget=forms.PasswordInput)
对于materialize not in django中的复选框,请尝试将其添加到css中

.input-field label {
  pointer-events: auto;
}

它应该可以解决您的问题,希望它能工作^ ^

非常感谢,密码可以解决,但复选框无法解决。我更新了我的答案,并在复选框中添加了可能的解决方案。希望它能工作,别忘了将我的答案作为最佳答案进行检查^_^