Python django.core.exceptions.FieldError:为用户指定的未知字段(dob)
我试图通过django创建一个简单的注册/登录页面。 我已经使用UserCreationForm和ModelUserProfile来扩展用户模型。 当我尝试添加另一个字段“dob”时,虽然我的UserProfile与一个字段“department”正常工作,但出现了错误。 我是django的新手,请简要解释。 提前谢谢 forms.pyPython django.core.exceptions.FieldError:为用户指定的未知字段(dob),python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我试图通过django创建一个简单的注册/登录页面。 我已经使用UserCreationForm和ModelUserProfile来扩展用户模型。 当我尝试添加另一个字段“dob”时,虽然我的UserProfile与一个字段“department”正常工作,但出现了错误。 我是django的新手,请简要解释。 提前谢谢 forms.py from django import forms from django.contrib.auth.forms import UserCreationForm
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from mysite.core.models import UserProfile
from django.db import models
class SignUpForm(UserCreationForm):
first_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
department = forms.CharField(max_length=30)
last_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')
dob = models.DateField(auto_now=False)
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email','password1', 'password2', 'department','dob',)
def save(self, commit=True):
# Save the provided password in hashed format
user = super(SignUpForm, self).save(commit=False)
user_profile = UserProfile(user=user, department=self.cleaned_data['department'],dob=self.cleaned_data['dob'])
user.save()
user_profile.save()
return user, user_profile
views.py
from django.contrib.auth.decorators import login_required
from django.contrib.auth import login, authenticate
from django.shortcuts import render, redirect
from mysite.core.forms import SignUpForm
@login_required
def home(request):
return render(request, 'home.html')
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user,user_profile = form.save(commit=False)
username = user.cleaned_data.get('username')
raw_password = user.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
login(request, user)
return redirect('home')
else:
form = SignUpForm()
return render(request, 'signup.html', {'form': form})
models.py
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE,unique=True)
department = models.CharField(max_length=500, blank=True)
dob = models.DateField(auto_now=False)
您希望在forms.py文件中使用
forms.DateField
而不是models.DateField
dob = forms.DateField(auto_now=False)
dob = models.DateField(auto_now=False)
仅适用于models.py文件:)欢迎使用。快乐编码