【发布时间】:2014-02-06 17:33:50
【问题描述】:
我正在尝试为我的自定义用户模型创建更新配置文件页面。在我的模型中,我的电子邮件字段设置为唯一的。
class User(UserBase):
...
email = models.EmailField(
max_length=100,
unique=True,
blank=True,
verbose_name='email address',
)
那么在我看来我有:
class UpdateProfileView(LoginRequiredMixin, UpdateView):
template_name = 'accounts/update-profile.html'
form_class = UpdateProfileForm
model = User
UpdateProfileForm 唯一要做的就是在clean 方法中检查旧密码与新密码是否不同。
我的问题是当我保存表单时收到错误消息User with this Email address already exists.。既然它是一个更新视图并保存一个没有改变的唯一字段,它不应该不会抛出这个错误吗?如果这是正确的行为,那么如何保存表单并在未更改的情况下忽略电子邮件地址。
提前感谢您的帮助。
【问题讨论】:
-
我是不是在吃疯狂的药,这不是问题还是愚蠢的问题?
-
没有人对此有任何反馈?
-
你为什么不给我们看
UpdateProfileForm,这样我们才能得到更好的主意。 -
右来自
form.savedocs:“ModelForm 的子类可以接受现有模型实例作为关键字参数实例;如果提供,save() 将更新该实例。如果它是未提供,save() 将创建指定模型的新实例。”你在使用instance参数吗? -
注释掉
form_class是否有效?