So I've been working on a Django project and I've hit a dead end. Every time that I try to modify the UserCreationForm to account for Insurance ID and/or provider, I hit an error that says I cannot do this:
Unknown field(s) (Insurance Provider, Insurance ID) specified for User
I was wondering if anyone could tell me how to add these Fields to the form without having to override my User class?
''' 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})
You are not correctly referring to the insurance_id
and insurance_provider
fields in your form. Change the Meta
class to:
class Meta:
model = User
fields = ("email", "password1", "password2", "insurance_id", "insurance_provider")
# Note: the last two fields have changed
You will also need to have defined insurance_id
and insurance_provider
in your User
model.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.