允许用户更改其电子邮件地址的最佳方式是创建可用于存储电子邮件地址的单独UserProfile模型。示例代码如下所示。
class UserProfileForm(ModelForm):
def __init__(self, *args, **kwargs):
super(UserProfileForm, self).__init__(*args, **kwargs)
try:
self.fields['email'].initial = self.instance.user.email
except User.DoesNotExist:
pass
email = forms.EmailField(label="Primary email")
class Meta:
model = Parent
def save(self, *args, **kwargs):
"""
Update the primary email address on the related User object as well.
"""
u = self.instance.user
u.email = self.cleaned_data['email']
u.save()
profile = super(UserProfileForm, self).save(*args,**kwargs)
return profile
通过这种方式,可以确保直到用户点击确认,你会被发送到用户的电子邮件地址联系新的电子邮件地址仍然无效。希望我回答你的问题。