Python 为什么firstname和lastname字段不输入数据库,而只输入我创建的customUser中的电子邮件和密码?

Python 为什么firstname和lastname字段不输入数据库,而只输入我创建的customUser中的电子邮件和密码?,python,django,web-development-server,django-custom-user,Python,Django,Web Development Server,Django Custom User,我从AbstractBaseUser创建了一个customUser,其中包含内置的字段email、firstname、lastname和password,以及BaseUserManager中的userManager,如下所示。但是只有电子邮件和密码被提交到数据库中,而不是lastname和firstname。我使用mysql作为dbms 模型 我从注册模板传递值 {% extends 'base1.html' %} {% block content %} <div class="conta

我从AbstractBaseUser创建了一个customUser,其中包含内置的字段email、firstname、lastname和password,以及BaseUserManager中的userManager,如下所示。但是只有电子邮件和密码被提交到数据库中,而不是lastname和firstname。我使用mysql作为dbms

模型

我从注册模板传递值

{% extends 'base1.html' %}
{% block content %}
<div class="container">
<form action="signup" method="POST">
{% csrf_token %}
<label for=""> First Name : </label>
<input type="text" name="firstname" placeholder="Enter Firstname"><br><br>
<label for="">Last Name : </label>
<input type="text" name="lastname" placeholder="Enter Lastname"><br><br>
<label for=""> E-mail : </label>
<input type="text" name="email" placeholder="Enter Email"><br><br>
<label for=""> Password : </label>
<input type="password" name="password1"><br><br>
<label for=""> Confirm Password : </label>
<input type="password" name="password2"><br><br>
<input type="submit" value="Signup" class="btn btn-primary">
</form>

<div>
{% for message in messages %}
<h3> {{message}} </h3>
{% endfor %}

</div>

</div>
{% endblock %}
但在我的数据库中只有电子邮件,密码被存储,无论何时新用户注册,firstname和lastname字段都是空的。 我正在提供我的url.py以防万一

from django.conf.urls import url
from django.contrib.auth import views as auth_views
from django.urls import path
from . import views
app_name = 'login'

urlpatterns = [
    path('ktupage/', views.ktupage, name='ktupage'),
    path('mgcourses/', views.mgcourses, name='mgcourses'),
    path('calicutcourses/', views.calicutcourses, name='calicutcourses'),
    path('mgcourses/mgaas/', views.mgaas, name='mgaas'),
    path('mgcourses/mgpara/', views.mgpara, name='mgpara'),
    path('calicutcourses/calicutaas/', views.calicutaas, name='calicutaas'),
    path('calicutcourses/calicutpara/', views.calicutpara, name='calicutpara'),
    path('login/', views.login, name='login'),
    path('logout/', auth_views.LogoutView.as_view(),name='logout'),
    path('signup', views.signup, name='signup'),
]

您只是忘记在
create\u user
方法中设置它们:

    def create_user(self, email, firstname, lastname, password=None, is_active=True, is_staff=False, is_admin=False):
        if not email:
            raise ValueError("user must have an email")
        user_obj = self.model(
            email = self.normalize_email(email)
        )
        user_obj.set_password(password)
        user_obj.active = is_active
        user_obj.staff = is_staff
        user_obj.admin = is_admin
        user_obj.firstname = firstname  # <------
        user_obj.lastname = lastname    # <------
        user_obj.save(using=self._db)
        return user_obj
def create_user(self、email、firstname、lastname、password=None、is_active=True、is_staff=False、is_admin=False):
如果不是电子邮件:
提升值错误(“用户必须有电子邮件”)
用户_obj=self.model(
电子邮件=自我规范化电子邮件(电子邮件)
)
用户对象设置密码(密码)
用户\u obj.active=处于\u活动状态
用户_obj.staff=是_staff
用户_obj.admin=是_admin

user_obj.firstname=firstname#
AbstractBaseUser
已经拥有
first_name
last_name
,不要创建自己的字段。@Alexall
AbstractUser
具有
first\u name
last\u name
而不是
AbstractBaseUser
否从AbstractBaseUser继承时,customuser没有first\u name和last\u name字段。我认为inbuit的名字和姓氏是针对抽象用户和默认用户的。您必须手动添加这些字段,至少我在数据库中看不到名字和姓氏。@请检查答案。为什么要使用AbstractBaseUser?你想完成什么?
from django.conf.urls import url
from django.contrib.auth import views as auth_views
from django.urls import path
from . import views
app_name = 'login'

urlpatterns = [
    path('ktupage/', views.ktupage, name='ktupage'),
    path('mgcourses/', views.mgcourses, name='mgcourses'),
    path('calicutcourses/', views.calicutcourses, name='calicutcourses'),
    path('mgcourses/mgaas/', views.mgaas, name='mgaas'),
    path('mgcourses/mgpara/', views.mgpara, name='mgpara'),
    path('calicutcourses/calicutaas/', views.calicutaas, name='calicutaas'),
    path('calicutcourses/calicutpara/', views.calicutpara, name='calicutpara'),
    path('login/', views.login, name='login'),
    path('logout/', auth_views.LogoutView.as_view(),name='logout'),
    path('signup', views.signup, name='signup'),
]
    def create_user(self, email, firstname, lastname, password=None, is_active=True, is_staff=False, is_admin=False):
        if not email:
            raise ValueError("user must have an email")
        user_obj = self.model(
            email = self.normalize_email(email)
        )
        user_obj.set_password(password)
        user_obj.active = is_active
        user_obj.staff = is_staff
        user_obj.admin = is_admin
        user_obj.firstname = firstname  # <------
        user_obj.lastname = lastname    # <------
        user_obj.save(using=self._db)
        return user_obj