Python 如何在Django中向UserCreationForm添加字段?
所以我一直在做一个Django项目,我已经走到了死胡同。每次我尝试修改UserCreationForm以说明保险ID和/或提供商时,我都会遇到一个错误,表明我无法执行此操作:Python 如何在Django中向UserCreationForm添加字段?,python,django,forms,web,Python,Django,Forms,Web,所以我一直在做一个Django项目,我已经走到了死胡同。每次我尝试修改UserCreationForm以说明保险ID和/或提供商时,我都会遇到一个错误,表明我无法执行此操作: Unknown field(s) (Insurance Provider, Insurance ID) specified for User 我想知道是否有人能告诉我如何在不重写我的用户类的情况下将这些字段添加到表单中 ''' Form used in patient registration. Extends User
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})
您没有正确引用表单中的
insurance\u id
和insurance\u provider
字段。将Meta
类更改为:
class Meta:
model = User
fields = ("email", "password1", "password2", "insurance_id", "insurance_provider")
# Note: the last two fields have changed
您还需要在
User
模型中定义insurance\u id
和insurance\u provider
。如果您只想将字段添加到django admin UserCreationForm,您不必在模型上定义insurance\u id和insurance\u provider,而只能将它们添加到admin类中的“add\u Fieldset”。