2015-11-03 37 views
1

所以我一直在研究一个Django项目,并且我已经陷入了死胡同。每次我试图修改UserCreationForm占保险ID和/或供应商的时候,我打,说我不能做这样的错误:如何在Django中将字段添加到UserCreationForm?

Unknown field(s) (Insurance Provider, Insurance ID) specified for User 

我想知道是否有人能告诉我如何添加这些字段到表单而不必重写我的用户类?

''' Form used in patient registration. Extends UserCreationForm ''' 
class PatientRegisterForm(UserCreationForm): 
    email = EmailField(required = True) 
    insurance_id = forms.CharField(required=True, label="Insurance ID") 
    insurance_provider = forms.CharField(required=True, label="Insurance Provider") 

    class Meta: 
     model = User 
     fields = ("email", "password1", "password2", "Insurance ID", "Insurance Provider") 

    def clean_password2(self): 
     password1 = self.cleaned_data.get("password1") 
     password2 = self.cleaned_data.get("password2") 
     if password1 and password2 and password1 != password2: 
      raise forms.ValidationError(
       self.error_messages['password_mismatch'], 
       code='password_mismatch', 
      ) 
     return password2 

    def save(self, commit=True): 
     user=super(UserCreationForm, self).save(commit=False) 
     user.set_password(self.clean_password2()) 
     user.insurance_id = self.cleaned_data["insurance_id"] 
     user.insurance_provider = self.cleaned_data["insurance_provider"] 
     if commit: 
      user.save() 
     return user 

''' This displays the patient login form. Unique because of insurance numbers ''' 
def patient_registration(request): 
    if request.POST: 
     form = PatientRegisterForm(request.POST) 
     if form.is_valid(): 
      new_user = form.save() 
      new_patient = Patient(user = new_user) 
      new_patient.save() 
      temp= Event(activity= '\n'+new_patient.user.get_full_name()+" has registered as a patient ") 
      temp.save() 
      return HttpResponseRedirect('/login/') # TODO : Refer them to there home page 
     else: 
      return HttpResponseRedirect('/login/') # TODO : Ditto ^^^ 
    else: 
     form = PatientRegisterForm() 
    return render(request, "main_site/patient_registration.html", {"form":form}) 

回答

1

您没有正确参照您的形式insurance_idinsurance_provider领域。在Meta类更改为:

class Meta: 
    model = User 
    fields = ("email", "password1", "password2", "insurance_id", "insurance_provider") 
    # Note: the last two fields have changed 

您还需要在您的User模型定义insurance_idinsurance_provider

相关问题