django中的ModelForms仅用于POST吗?

时间:2013-05-15 14:26:03

标签: python django django-models django-forms

ModelForms是防止重复创建模型定义的好方法。我想要做的是利用该功能,并将其用于处理POST请求。我经常使用表格进行验证。

示例:

假设您有一个包含字段的用户模型(email,password,first_name,last_name)。电子邮件字段是唯一的索引。

UserCreationForm:使用所有字段,如果电子邮件已存在则验证失败。处理POST请求 UserUpdateForm:相同的型号,但不允许更改电子邮件。因为这个字段被排除在外没有问题。 UserAuthenticationForm:仅包含电子邮件和密码字段。问题是,这应该用于身份验证和验证失败,因为电子邮件已经存在。

有没有办法可以做到这一点?也就是说,让UserAuthenticationForm跳过电子邮件检查。

谢谢。

1 个答案:

答案 0 :(得分:0)

ModelForms用于创建/更新对象。身份验证不会修改模型实例(User),因此请使用普通表单。

来自文档:

  

save()方法

     

ModelForm生成的每个表单都有一个save()方法。这种方法   从绑定到表单的数据创建并保存数据库对象。一个   ModelForm的子类可以接受现有的模型实例作为   关键字参数实例;如果提供了这个,save()将更新   那个例子。如果没有提供,save()将创建一个新实例   指定模型的。

如果您不打算使用此save()方法,并且您不需要大多数模型字段(只有用户名/电子邮件和密码),那么您将丢弃所提供的大部分功能在ModelForm之后,为什么你会在第一时间使用它?