django扩展模型用户错误此字段是必需的

时间:2015-02-03 18:59:02

标签: django

这是我的第一个Django项目,自1个月后我就被阻止了,我需要帮助。 我想扩展模型用户(添加"年龄"和"性")。 但在我的view.py" form.is_valid()"是错误的,错误是:

<ul class="errorlist"><li>user<ul class="errorlist"><li>This field is requiered.</li></ul></li></ul>

我可能会犯很大的错误,我会看很多教程来制作这段代码。 这是我的model.py:

from django.contrib.auth.models import User
from django.db import models

class Profil(models.Model):
    user = models.OneToOneField(User)  # La liaison OneToOne vers le modele User                                      
    Age = models.IntegerField()
    Sexe = models.BooleanField(default=1)

    def __str__(self):
        return "Profil de {0}".format(self.user.username)

这是我的view.py:

from django.shortcuts import render, redirect
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib.auth.models import User
from django import forms
from django.forms import ModelForm
from models import Profil

class ProfilForm(ModelForm):
    FirstName = forms.CharField(label='Prenom',max_length=100)
    LastName = forms.CharField(label="Nom",max_length=100)
    MailAdress = forms.EmailField(label="Adresse mail",max_length=100)
    Age = forms.IntegerField(label='Age',min_value=16,max_value=120)
    Sexe = forms.BooleanField(label='Sexe',initial=False)
    UserName = forms.CharField(label='Pseudo',max_length=100)
    Password = forms.CharField(widget=forms.PasswordInput,label="Mot de passe",max_length=10)

    class Meta:
        model = Profil


def SubmitFormulaireInscription(request):
    if request.method == 'POST':
        form = ProfilForm(request.POST)
        html = form
        print form.errors
        if form.is_valid():
            FirstName = form.cleaned_data['FirstName']
            LastName = form.cleaned_data['LastName']
            MailAdress = form.cleaned_data['MailAdress']
            Age = form.cleaned_data['Age']
            Sexe = form.cleaned_data['Sexe']
            UserName = form.cleaned_data['UserName']
            Password = form.cleaned_data['Password']

            user = User.objects.create_user(first_name=FirstName,last_name=LastName,email=MailAdress,username=UserName,\
password=Password,Age=Age,Sexe=Sexe)
            user.save()

            html = "<html><body>merci mon ami ton first name = {!s} et ton last name = {!s} et ton email = {!s} et ton \
pseudo = {!s} et ton mot de passe = {!s} et ton age = {!s}  </html></body>".format(FirstName,LastName,MailAdress,UserNa\
me,Password,Age)

            return HttpResponse(html)
    else:
        form = ProfilForm()

    return render(request, 'inscription.html', { 'form': form, })

1 个答案:

答案 0 :(得分:0)

您的ProfilFormProfil模型的ModelForm。但您正在尝试使用User模型中的字段。只有在使用model inheritance时才能使用。

您还没有使用模型继承,只需要OneToOneField连接两个单独的模型。

您需要首先确定您是否真的需要单独的UserProfil模型(这是有效的,但您需要构建表单并查看 two 型号)。

您可能最好只添加一个custom user model,并添加AgeSexe字段。