Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中向UserCreationForm添加字段?_Python_Django_Forms_Web - Fatal编程技术网

Python 如何在Django中向UserCreationForm添加字段?

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

所以我一直在做一个Django项目,我已经走到了死胡同。每次我尝试修改UserCreationForm以说明保险ID和/或提供商时,我都会遇到一个错误,表明我无法执行此操作:

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”。