使用materialize生成django表单时出错
当我使用模板填写表单时,我不能使用复选框,因为它们显示为禁用状态,我无法选择它们,并且密码如果不是简单的文本,也不会以散列形式保存 我有一个带有AbstractUser和signals的用户模型的表单代码,用于创建多个角色:使用materialize生成django表单时出错,django,Django,当我使用模板填写表单时,我不能使用复选框,因为它们显示为禁用状态,我无法选择它们,并且密码如果不是简单的文本,也不会以散列形式保存 我有一个带有AbstractUser和signals的用户模型的表单代码,用于创建多个角色: class User(AbstractUser): is_administrator = models.BooleanField(default=False) is_satellite = models
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;
}
它应该可以解决您的问题,希望它能工作^ ^非常感谢,密码可以解决,但复选框无法解决。我更新了我的答案,并在复选框中添加了可能的解决方案。希望它能工作,别忘了将我的答案作为最佳答案进行检查^_^