Python 为什么firstname和lastname字段不输入数据库,而只输入我创建的customUser中的电子邮件和密码?
我从AbstractBaseUser创建了一个customUser,其中包含内置的字段email、firstname、lastname和password,以及BaseUserManager中的userManager,如下所示。但是只有电子邮件和密码被提交到数据库中,而不是lastname和firstname。我使用mysql作为dbms 模型 我从注册模板传递值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
{% 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
,不要创建自己的字段。@AlexallAbstractUser
具有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