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 :
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)"
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
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)
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
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())
J'obtiens l'erreur suivante :
Column 'user_id' cannot be null
Je ne vois malheureusement pas pourquoi l'enregistrement ne se fait pas.
Si vous avez des remarques je suis preneur.
Merci