python - has_changed() 缺少 2 个必需的位置参数:“初始”和“数据”
问题描述
我试图通过像这样检查视图来防止用户干预隐藏的表单字段:
if form.fields["email"].has_changed():
form.add_error(
"email",
ValidationError(
"Email does not correspond to user", code="invalid_email",
),
)
但我得到以下类型错误:
has_changed() 缺少 2 个必需的位置参数:“初始”和“数据”
此时,form
顺便说一句,是一个经过用户和POST请求的“绑定表单”。
检查函数本身,它似乎有两个非可选参数,但文档根本没有提到这些,而且我也不太清楚我应该传递什么:如果我必须提供初始值和新的重视自己,我可以自己比较,不需要这种方法。我错过了什么?
我还想到我只需要将字段设置为禁用,任何更改的值都将被忽略,但我仍然很好奇。
解决方案
它是绑定形式这一事实并没有太大区别。这form.fields
是一个在表单字段上映射字符串的字典。表单使用字段的has_changed
方法 [GitHub]来确定值是否确实已更改。
您可以通过检查changed_data
字典来检查值是否已更改:
if 'email' in form.changed_data:
form.add_error(
"email",
ValidationError(
"Email does not correspond to user", code="invalid_email",
),
)
推荐阅读
- azure - 使用 Powershell 管理 Azure 备份 (MARS) - 如何添加系统状态
- log4j - 进程完成后释放日志文件 log4j 的锁定
- ionic-framework - ionViewWillEnter() 在模态关闭后未触发
- html - 单击模板Angular 6中的按钮
- windows-server - com.hierynomus.mssmb2.SMBApiException:STATUS_NETWORK_NAME_DELETED 异常
- kiwi-tcms - 如何在 Windows 7 Docker 工具箱上访问 Kiwi-tcms MariaDB?
- origen-sdk - SMT 测试套件描述和注释有什么区别?
- c# - 尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现 0x8007000d 错误 500.19
- firebase - Firebase 实时数据库清理计划
- r - rmarkdown:当 grid.raster 在 `if` 块内时,绘图消失