在django中添加自定义用户注册字段

问题描述:

我找不到很多信息/无法将自定义用户字段添加到django create_user函数中。我有很多字段,不知道如何让他们进入数据库,因为目前这个功能只允许用户名,密码,名字和姓氏。我的意见/表格/型号:在django中添加自定义用户注册字段

观点:

def create_account(request): 
    form = CreateAccountForm(request.POST) 
    if form.is_valid(): 
     username = form.cleaned_data['username'] 
     password = form.cleaned_data['password'] 
     password2 = form.cleaned_data['password2'] 
     first_name = form.cleaned_data['first_name'] 
     last_name = form.cleaned_data['last_name'] 
     gender = form.cleaned_data['gender'] 
     medication = form.cleaned_data['medication'] 
     medical_history = form.cleaned_data['medical_history'] 
     DOB = form.cleaned_data['DOB'] 
     email = form.cleaned_data['email'] 
     telephone = form.cleaned_data['telephone'] 
     address = form.cleaned_data['address'] 
     city = form.cleaned_data['city'] 
     state = form.cleaned_data['state'] 
     postcode = form.cleaned_data['postcode'] 

     if password == password2: 
      if (password_verification(password)) == 3: 
       if (username_verification(username)) == False: 
        user = User.objects.create_user(username, email, password) 
        user.last_name = last_name 
        user.first_name = first_name 
        user.save() 
        return HttpResponseRedirect('/login') 
       else: 
        return HttpResponseRedirect('/create_account') 
      else: 
       return HttpResponseRedirect('/create_account') 
     else: 
      return HttpResponseRedirect('/create_account') 
    return render(request, "create_account.html", {'form': form}) 

型号:

class user(models.Model): 
    username = models.CharField(max_length=20) 
    password = models.CharField(max_length=15) 
    password2 = models.CharField(max_length=20) 
    first_name = models.CharField(max_length=20) 
    last_name = models.CharField(max_length=20) 
    gender = models.CharField(max_length=20) 
    medication = models.CharField(max_length=50, blank=True) 
    medical_history = models.CharField(max_length=50,blank=True) 
    DOB = models.CharField(max_length=20) 
    email = models.EmailField(max_length=30) 
    telephone = models.CharField(max_length=20) 
    address = models.CharField(max_length=30) 
    city = models.CharField(max_length=20) 
    state = models.CharField(max_length=20) 
    postcode = models.CharField(max_length=30) 

形式:

class CreateAccountForm(forms.Form): 
    username = forms.CharField() 
    password = forms.CharField(widget=forms.PasswordInput) 
    password2 = forms.CharField(widget=forms.PasswordInput) 
    first_name = forms.CharField() 
    last_name = forms.CharField() 
    gender = forms.CharField() 
    medication = forms.CharField() 
    medical_history = forms.CharField() 
    DOB = forms.CharField() 
    email = forms.CharField() 
    telephone = forms.CharField() 
    address = forms.CharField() 
    city = forms.CharField() 
    state = forms.CharField() 
    postcode = forms.CharField() 

如果有人知道如何添加额外的字段到数据库我会非常感激!

如果你想扩展你的用户,你不能创建用户名为char字段的模型。只需按照此Django Docs