【发布时间】:2021-04-07 08:39:58
【问题描述】:
我的程序目前有问题,我的一些输入没有保存在 MySQL 数据库中 - 任何帮助将不胜感激
这将创建一个自定义用户,即员工、管理员和高级员工 - 这是一个不同的模型,所以另一个表
class CustomUser(AbstractUser):
user_type_data=((1,"Admin"),(2,"senioremployee"),(3,"employee"))
user_type=models.CharField(default=1,choices=user_type_data,max_length=20)
这是我的一种用户类型的模型
class senioremployee(models.Model):
id = models.AutoField(primary_key=True)
admin=models.OneToOneField(CustomUser, on_delete=models.CASCADE)
Dob = models.DateField()
Nationality = models.TextField()
Address = models.TextField()
Postcode = models.TextField()
Telephone = models.TextField()
Wage = models.TextField()
Passportnumber = models.TextField()
passportexpirydate = models.DateField()
gender = models.CharField(max_length=255)
profile_pic = models.FileField()
kinname = models.TextField()
kinrelation = models.TextField()
kinaddress = models.TextField()
kinphonenumber = models.TextField()
kinemail = models.TextField()
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now_add=True)
objects = models.Manager()
此函数将用户的数据添加到表中
@receiver(post_save,sender = CustomUser)
def create_user_profile(sender,instance,created,**kwargs):
if created:
if instance.user_type==1:
admin.objects.create(admin = instance,Dob="",Nationality="",Address="",Postcode="",Telephone="",Wage="",Passportnumber="",passportexpirydate="",gender="",profile_pic="",kinname="",kinrelation="",kinaddress="",kinphonenumber="",kinemail = "")
if instance.user_type==2:
senioremployee.objects.create(admin = instance,Dob="",Nationality="",Address="",Postcode="",Telephone="",Wage="",Passportnumber="",passportexpirydate="",gender="",profile_pic="",kinname="",kinrelation="",kinaddress="",kinphonenumber="",kinemail = "")
if instance.user_type==3:
employee.objects.create(admin = instance,Dob="",Nationality="",Address="",Postcode="",Telephone="",Wage="",Passportnumber="",passportexpirydate="",gender="",profile_pic="",kinname="",kinrelation="",kinaddress="",kinphonenumber="",kinemail = "")
此函数旨在将输入保存到 Senioremployee 表中,并将电子邮件、密码、名字、姓氏、用户名保存到自定义用户表中,但目前它只将电子邮件、密码、名字、姓氏、用户名保存到自定义用户表中用户表,而忽略其他用户输入
def add_seniorEmployee_save(request):
if request.method!="POST":
return HttpResponse("Method Not Allowed")
else:
first_name=request.POST.get("first_name")
last_name=request.POST.get("last_name")
username=request.POST.get("username")
email=request.POST.get("email")
password=request.POST.get("password")
Dob=request.POST.get("Dob")
Nationality=request.POST.get("Nationality")
Address=request.POST.get("Address")
Postcode=request.POST.get("Postcode")
Telephone=request.POST.get("Telephone")
Wage=request.POST.get("Wage")
Passportnumber=request.POST.get("Passportnumber")
passportexpirydate=request.POST.get("passportexpirydate")
gender=request.POST.get("gender")
kinname=request.POST.get("kinname")
kinrelation=request.POST.get("kinrelation")
kinaddress=request.POST.get("kinaddress")
kinphonenumber=request.POST.get("kinphonenumber")
kinemail=request.POST.get("kinemail")
try:
user = CustomUser.objects.create_user(username=username,password=password,email=email,first_name=first_name,last_name=last_name,user_type=2)
user.senioremployee.Dob = Dob
user.senioremployee.Nationality = Nationality
user.senioremployee.Address = Address
user.senioremployee.Postcode = Postcode
user.senioremployee.Telephone = Telephone
user.senioremployee.Wage = Wage
user.senioremployee.Passportnumber = Passportnumber
user.senioremployee.passportexpirydate = passportexpirydate
user.senioremployee.gender = gender
user.senioremployee.profile_pic=""
user.senioremployee.kinname = kinname
user.senioremployee.kinrelation = kinrelation
user.senioremployee.kinaddress = kinaddress
user.senioremployee.kinphonenumber = kinphonenumber
user.senioremployee.kinemail = kinemail
user.save()
messages.success(request, "Successfully Added Senior Employee")
return HttpResponseRedirect("/add_seniorEmployee")
except:
messages.error(request, "Couldnt add senior employee")
return HttpResponseRedirect("/add_seniorEmployee")
【问题讨论】: