首页 > 解决方案 > Django Emailfield 固定后缀

问题描述

在我的联系人模型中,我使用 EmailField 来确保我保存了一个有效的电子邮件地址。

然而,在我的表单中,我只希望用户能够更改之前的部分@,域部分不是用户定义的。(例如,每封电子邮件都需要以 结尾@gmail.com

我已经查看了很多关于在验证和显示阶段之前和之后修改 Django 表单字段值的问题,但是很多答案有点“hacky”,或者对于我的案例来说似乎是一种解决方法。

是否有某种显示过滤器的支持,它管理 Django 表单字段的固定前缀/后缀,而无需编辑 POST 值或需要抑制某些验证?

标签: djangoforms

解决方案


使用表单中的 clean 方法来验证电子邮件。会是这样的

def clean(self):
    """Check if valid email for institution."""
    super().clean()
    cleaned_data = self.cleaned_data

    if not '@gmail.com' in cleaned_data['email']
        msg = forms.ValidationError("Your email must be @gmail")
        self.add_error('email', msg)

推荐阅读