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
模型字段?太棒了,谢谢。