Python django.core.exceptions.FieldError:为用户指定的未知字段(dob)

Python 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

我试图通过django创建一个简单的注册/登录页面。 我已经使用UserCreationForm和ModelUserProfile来扩展用户模型。 当我尝试添加另一个字段“dob”时,虽然我的UserProfile与一个字段“department”正常工作,但出现了错误。 我是django的新手,请简要解释。 提前谢谢

forms.py

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文件

:)欢迎使用。快乐编码