2017-11-23 2 views
0

私はdjango.contrib.auth.models.HoweverのUserモデルに誕生日&セックスデータ列を追加し、私はdjango.contrib.auth.modelsのUserモデルにいくつかの列を追加できませんか?

from django import forms 
from django.contrib.auth.forms import UserCreationForm 
from django.contrib.auth.forms import AuthenticationForm 
from .models import User 

class RegisterForm(UserCreationForm): 
    class Meta: 
     model = User 
     fields = ('username', 'email','password1','password1','birthday','sex',) 
    def __init__(self, *args, **kwargs): 
     super(RegisterForm, self).__init__(*args, **kwargs) 
     self.fields['username'].widget.attrs['class'] = 'form-control' 
     self.fields['email'].widget.attrs['class'] = 'form-control' 
     self.fields['password1'].widget.attrs['class'] = 'form-control' 
     self.fields['password2'].widget.attrs['class'] = 'form-control' 
     self.fields['birthday'].widget.attrs['class'] = 'form-control' 
     self.fields['sex'].widget.attrs['class'] = 'form-control' 

ようforms.py書いて、私はコードを実行すると、django.core.exceptions.FieldErrorたいです:ユーザーエラーに対して指定された不明なフィールド(誕生日)が発生します。 はできますか?今、私は誕生日&セックスのデータ列を追加したいので、どのように私はそれを行うことができる唯一の&メール&パスワード& is_staff & last_login etc.Butをユーザ名のように、フィールド限定されている」私はDjangoのドキュメントを検索するので、私はユーザーオブジェクトの種類が見つかりました私はそれをしますか?どのように書くべきですか? は今の答えに従うことによって、私はmodels.py

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

class NewUser(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    birthday = models.DateField() 
    sex = models.IntegerField() 

を書き直した私は、エラーdjango.coreを得たbefore.But同じようにforms.py書き直しforms.py

class RegisterForm(ModelForm): 
    class Meta: 
     model = NewUser 
     fields = ('username', 'email','password1','password1','birthday',) 
    def __init__(self, *args, **kwargs): 
     super(RegisterForm, self).__init__(*args, **kwargs) 
     self.fields['username'].widget.attrs['class'] = 'form-control' 
     self.fields['email'].widget.attrs['class'] = 'form-control' 
     self.fields['password1'].widget.attrs['class'] = 'form-control' 
     self.fields['password2'].widget.attrs['class'] = 'form-control' 
     self.fields['birthday'].widget.attrs['class'] = 'form-control' 

を書き直し.exceptions.FieldError:NewUserに指定されている不明なフィールド(ユーザー名、パスワード1、電子メール)。これを修正する必要がありますか?あなたのRegisterForm

答えて

0

更新

modelNewUserであるべきであり、あなたはModelFormを使用することをお勧めします。

Creating forms from models

のみform orginal

変更は十分ではありません、あなたはmodelから開始する必要があり、私はあなたがOneToOneFieldを使用して、あなた自身のmodelに欲しいものを追加提案:

from django.contrib.auth.models import User 

class Employee(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    birthday = models.DateField() 
    sex = models.IntegerField() 

を入力して、独自のformを作成することができます。

Extending the existing User model

+0

ウルanser.Iは私の質問を更新THX、uは何かを知っていればuはウルの意図と同じようである私のコードをチェックしthx.But同じエラーhappens.Iがagain.Could私の質問を更新し、私 – user8817477

+0

を助けてくださいコード? – user8817477

+0

@ user8817477 'username、password1、email'これらの3つは、' NewUser'にないので 'fields'に入れてはいけません。' RegisterForm'フィールドに追加することができます。 – shellbye

関連する問題