2017-09-29 2 views
0

J'ai essayé de créer un formulaire d'inscription personnalisé à l'aide d'un modèle utilisateur étendu dans django. L'un des champs personnalisés que j'ai essayé d'ajouter est un type d'utilisateur qui ne peut être que "Employee" ou "Admin".Impossible d'ajouter un champ de formulaire de choix dans usercreateform personnalisé

Ma classe signUpForm ressemble à ceci

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 vient de mon models.py qui ressemblent à ce

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, 
) 

Lors de l'exécution du serveur, je reçois l'erreur TypeError: initialisation() a obtenu un argument mot-clé inattendu 'choix'

Y a-t-il une méthamphétamine différente? od pour ajouter les choix à mon champ de formulaire?

Répondre

0

La source de votre erreur est due à l'utilisation de CharField au lieu d'utiliser ChoiceField. https://docs.djangoproject.com/en/1.11/ref/forms/fields/#choicefield

Même si ce que vous essayez d'accomplir ne fonctionnera pas avec le formulaire créé. Vous devez créer une ModelForm pour votre modèle de profil. Ensuite, vous pouvez rendre le champ simplement sur un modèle.