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

Python django.core.exceptions.FieldError:为员工指定的未知字段(用户名),python,django,Python,Django,我正在尝试扩展用户模型 from django.db import models from django.contrib.auth.models import User class Employee(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) department = models.CharField(max_length=200) 所以我创建了一个名为employee

我正在尝试扩展用户模型

from django.db import models

from django.contrib.auth.models import User

class Employee(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    department = models.CharField(max_length=200)
所以我创建了一个名为employee with foreignkey to user模型的新模型

from django.db import models

from django.contrib.auth.models import User

class Employee(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    department = models.CharField(max_length=200)
并试图为注册创建一个表单

from django.contrib.auth.forms import UserCreationForm
from employee.models import Employee

class EmployeeForm(UserCreationForm):
    class Meta(UserCreationForm.Meta):
        model = Employee
        fields = UserCreationForm.Meta.fields + ('department',)
这些是我所做的唯一更改,我收到以下错误:

文件“/home/sugumar/python/django/project1/project1/url.py”,第行 18,在 从employee.views导入注册文件“/home/sugumar/python/django/project1/employee/views.py”,第2行,在 从.forms导入EmployeeForm文件“/home/sugumar/python/django/project1/employee/forms.py”,第4行,在 类EmployeeForm(UserCreationForm):文件“/home/sugumar/.local/share/virtualenvs/project1-j0yhUYNK/lib/python3.5/site packages/django/forms/models.py”, 第266行,在新建中 raise FIELDERRO(消息)django.core.exceptions.FieldError:为员工指定的未知字段(用户名)

我试图扩展用户模型,所以我创建了一个名为employee with foreignkey to user model的新模型

通过使用
OneToOneField
,确实可以扩展用户系统,但不能简单地使用它以相同的
形式处理两个模型,从而同时构造两个对象

这里基本上构造的是
Employee
模型上的
ModelForm
,但是这里构造了一个带有额外字段的
Meta
类,但是这些字段与
Employee
对象上的模型字段不相关,因此出现了错误

可能最好只构建两个表单,因此
Employee
-表单如下所示:

# app/forms.py

from django.forms import ModelForm

class EmployeeForm(ModelForm):

    class Meta:
        model = Employee
        fields = ('department',)
因此,在视图中,如果两种形式都有效,我们将创建一个
User
Employee
对象,并将
Employee
链接到
User
。我们还使用两种形式呈现模板

在模板中,我们在相同的
标记中呈现两个表单:

<!-- app/templates/app/my_template.html -->

<form action="{% url 'app:create_user' %}" method="post">
    {% csrf_token %}
    {{ user_form }}
    {{ employee_form }}
</form>

{%csrf_令牌%}
{{user_form}}
{{employee_form}}

其中,
“app:create_user”
是指向上面定义的视图的URL的名称。

您不能继承这样的字段,
员工
没有
用户名
。我认为最小的改变是使用两个表单,并将其呈现为一个表单,然后处理这两个表单,并构造一个
User
Employee
对象。@Willem Van Onsem,所以没有办法向现有表单添加自定义字段,对吗?有,您可以简单地向表单添加字段,但这不会产生“绑定”到模型字段(这毕竟是大多数人感兴趣的
ModelForm
提供的便利)。很抱歉打断一个老问题,但我有一个类似的问题——没有办法将自定义
User
表单字段绑定到自定义
User
模型字段?太棒了,谢谢。