Bonjour à tous,
je me mets tranquillement à Django et je fais face à mes premières difficultés.
Je veux créer un formulaire de création de compte sans utiliser d'app externe mais je n'arrive pas à créer de nouveaux comptes.
Voici mon modèle :
Voila mon fichier forms.py :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 class UserProfile(models.Model): user = models.OneToOneField(User) avatar = models.ImageField(null=True, blank=True, upload_to='avatar/') website = models.URLField(null=True, blank=True) birthday = models.DateField() country = CountryField() GENDER_CHOICES = ( ('M', 'Male'), ('F', 'Female'), ) gender = models.CharField(max_length=1, choices=GENDER_CHOICES) def __str__(self): return "UserProfile(models)" class UserLanguage(models.Model): user = models.ForeignKey(User) language = models.CharField(max_length=7, choices=LANGUAGES) level = models.CharField(max_length=1) # http:// questions/3201018/django-language-codes def __str__(self): return "UserLanguage(models)"
Et enfin mon views.py :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class RegisterForm(forms.ModelForm): class Meta: model = User fields = ('username', 'password',) exclude = ('last_login',) widgets = {'password': forms.PasswordInput(), } UserProfileFormSet = inlineformset_factory(User, UserProfile, can_delete=False) UserLanguageFormSet = inlineformset_factory(User, UserLanguage, can_delete=False, extra=1)
J'obtiens l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 def registration(request): if request.method == "POST": user = RegisterForm(request.POST) user_profile = UserProfileFormSet(request.POST) user_language = UserLanguageFormSet(request.POST) if user.is_valid() and user_profile.is_valid() and user_language.is_valid(): u = user.save() user_profile.user = u user_profile.save() user_language.user = u user_language.save() else: user = RegisterForm() user_profile = UserProfileFormSet() user_language = UserLanguageFormSet() return render(request, 'user/registration.html', locals())Je ne vois malheureusement pas pourquoi l'enregistrement ne se fait pas.Column 'user_id' cannot be null
Si vous avez des remarques je suis preneur.
Merci
Partager