Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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中为表单编写保存方法?_Python_Django_Django Models_Django Forms - Fatal编程技术网

Python 如何在django中为表单编写保存方法?

Python 如何在django中为表单编写保存方法?,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,我在Django中有两个模型:User(由Django预定义)和UserProfile。两者通过外键连接。我正在创建一个表单,允许客户编辑他们的用户配置文件。因此,此表格将基于上述两种模型 如何为此窗体创建save()方法?完成保存功能的步骤/要求是什么 以下是迄今为止我在forms.py中看到的内容: class UserChangeForm(forms.Form): #fields corresponding to User Model email = forms.Email

我在Django中有两个模型:User(由Django预定义)和UserProfile。两者通过外键连接。我正在创建一个表单,允许客户编辑他们的用户配置文件。因此,此表格将基于上述两种模型

如何为此窗体创建save()方法?完成保存功能的步骤/要求是什么

以下是迄今为止我在forms.py中看到的内容:

class UserChangeForm(forms.Form):
    #fields corresponding to User Model
    email = forms.EmailField(required=True)
    first_name = forms.CharField(max_length = 30)
    last_name = forms.CharField(max_length = 30)
    password1 = forms.CharField(max_length=30, widget=forms.PasswordInput)
    password2 = forms.CharField(max_length=30, widget=forms.PasswordInput)

    #fields corresponding to UserProfile Model
    gender = forms.CharField(max_length = 30, widget=forms.Select)
    year = forms.CharField(max_length = 30, widget=forms.Select)
    location = forms.CharField(max_length = 30, widget=forms.Select)

    class Meta:
        fields = ("username", "email", "password1", "password2", "location", "gender", "year", "first_name", "last_name")

    def save(self):
        data = self.cleaned_data
        # What to do next over here?
这是一个好的开始,还是有人建议在开始编写save()函数之前对此进行更改?

构造函数的参数(也在继承的
ModelForm
上)将允许您在单个
标记中放置多个表单,并在提交时区分它们

mf1 = ModelForm1(prefix="mf1")
mf2 = ModelForm2(prefix="mf2")
return render_to_response(..., {'modelform1': mf1, 'modelform2': mf2}, ...)


{{modelform1}}
{{modelform2}}
...
这可能会对您有所帮助

def save(self):
    data = self.cleaned_data
    user = User(email=data['email'], first_name=data['first_name'],
        last_name=data['last_name'], password1=data['password1'],
        password2=data['password2'])
    user.save()
    userProfile = UserProfile(user=user,gender=data['genger'],
        year=data['year'], location=data['location'])
    userProfile.save()

我可以创建一个基于两个模型的模型表单吗?如果是这样的话,我该怎么做?为了澄清/学习,将数据保存为模型实例的目的是什么?每个表单都是这样做的吗?如果是,为什么?只有基于表单的“ModelForm”有一个内置的保存方法。对于基于“表单”的表单,必须创建一个保存方法。
def save(self):
    data = self.cleaned_data
    user = User(email=data['email'], first_name=data['first_name'],
        last_name=data['last_name'], password1=data['password1'],
        password2=data['password2'])
    user.save()
    userProfile = UserProfile(user=user,gender=data['genger'],
        year=data['year'], location=data['location'])
    userProfile.save()