通过数据库约束实现模型验证逻辑:可行、不可行还是没必要?
关于模型验证与数据库约束同步的一点实践心得
完全能理解那种“只在模型的clean()方法里写数据约束验证,却不在数据库层同步添加对应约束”的做法有多别扭——毕竟数据库本身就已经支持NOT NULL这类基础约束了,单靠应用层的验证总感觉少了一道兜底防线。
我最近在项目里就特意针对这个问题做了调整:编写RawSQL迁移脚本,给数据库添加和clean()方法逻辑完全匹配的ADD CONSTRAINT约束。目前运行下来效果还不错,数据一致性确实更有保障了,但说实话,手动同步这些约束真不是件轻松的事:
- 得仔细对应
clean()里的每一条验证规则,不能有遗漏 - 要考虑现有数据的兼容性,避免迁移脚本执行失败
- 后续模型验证逻辑修改时,还得记得同步更新数据库约束,很考验细心程度
内容的提问来源于stack exchange,提问作者Dustin Wyatt
相关产品推荐
相关产品推荐

