【问题标题】:Django Emailfield fixed suffixDjango Emailfield 固定后缀
【发布时间】:2019-05-27 15:19:05
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: django forms


    【解决方案1】:

    在您的表单中使用 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)
    

    【讨论】:

    • 感谢您的回复。我不想抛出验证错误,但我想在保存/验证之前静默添加电子邮件地址的域部分并在渲染之前将其删除
    • 然后在clean方法中修改cleaned_data
    猜你喜欢
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 2013-02-08
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多