0

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

例子:

假设您有一个包含字段(电子邮件、密码、名字、姓氏)的用户模型。电子邮件字段是唯一的并且是一个索引。

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

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

谢谢你。

4

1 回答 1

0

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

从文档:

保存()方法

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

如果您不打算使用 this save(), 方法并且您也不需要大多数模型字段(只有用户名/电子邮件和密码),那么您将丢弃 . 提供的大部分功能ModelForm,那么为什么要使用首先是它?

于 2013-05-15T14:43:17.923 回答