Django 的 save() 方法默认情况下 不会自动进行数据验证。如果需要在保存之前执行数据验证,需要手动调用 full_clean() 方法,或者通过重写 save() 方法显式触发验证。 update()方法直接执行 SQL,不会实例化模型对象,也不会触发模型方法(如 save() 或 full_clean())。用于批量更新数据,性能高但需要手动确保数据正确性。
方法 |
是否触发验证 | 说明 |
full_clean() | ✅ | 手动调用时触发验证,包含字段验证和模型级验证。 |
save() | ❌ | (默认不触发) 需要手动调用 full_clean() 或重写 save() 方法。 |
update() | ❌ | 直接执行 SQL,不触发任何验证或模型方法。 |
结论:
save() 默认不会进行数据验证。
如果需要验证,请显式调用 full_clean(),或者通过重写 save() 方法强制执行验证。
如果需要全局保证数据一致性,建议在模型的 save() 方法中调用 full_clean()。
对于性能敏感的批量更新,使用 update(),但需确保外部逻辑对数据进行验证。