我一直在尝试使用django中的扩展用户模型创建自定义注册表单。我尝试添加的一个自定义字段是用户类型,它只能是"员工"或"管理员"。
我的signUpForm类看起来像这样
from .models import EMPLOYEE_TYPE_CHOICES
class SignUpForm(UserCreationForm):
usertype = forms.CharField(
max_length=10,
choices=EMPLOYEE_TYPE_CHOICES,
)
userID = forms.CharField(label="User ID")
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', 'userID', 'usertype')
EMPLOYEE_TYPE_CHOICES来自我的models.py,看起来像这样
EMPLOYEE_TYPE_CHOICES = (
('admin', 'Admin'),
('employee', 'Employee'),
)
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
ADMIN = 'Admin'
EMPLOYEE = 'Employee'
EMPLOYEE_TYPE_CHOICES = (
(ADMIN, 'Admin'),
(EMPLOYEE, 'Employee'),
)
usertype = models.CharField(
max_length=10,
choices=EMPLOYEE_TYPE_CHOICES,
)
userID = models.CharField(
max_length=10,
)
运行服务器时,收到错误 TypeError: init ()得到了一个意外的关键字参数'选择'
是否有不同的方法可以将选项添加到表单字段中?
答案 0 :(得分:0)
您的错误来源是由于使用CharField而不是使用ChoiceField。 https://docs.djangoproject.com/en/1.11/ref/forms/fields/#choicefield
即使你想要完成的是什么,也不会使用创建的表单。您必须为Profile模型创建ModelForm。然后,您可以只在模板上渲染字段。