为什么form.is\u valid()会更新Django ModelForms的相关模型?
有人能解释一下吗?表单验证方法会更新相关模型,这是非常不直观的。我知道它不会提交到数据库,但为什么还要修改内存中的模型呢?为什么不使用form.save()呢?我认为原因如下: 第一次调用是\u valid()或 访问数据库的errors属性 ModelForm总是触发form 验证,但从Django 1.2开始 还将触发模型验证。 这有清洁的副作用 传递给ModelForm的模型 构造器。例如,打电话 表单上的“”是否有效()将转换为 您的模型上的任何日期字段 实际日期对象 从。从逻辑上讲,这确实有道理。假设我有一个这样的模型:为什么form.is\u valid()会更新Django ModelForms的相关模型?,django,django-forms,Django,Django Forms,有人能解释一下吗?表单验证方法会更新相关模型,这是非常不直观的。我知道它不会提交到数据库,但为什么还要修改内存中的模型呢?为什么不使用form.save()呢?我认为原因如下: 第一次调用是\u valid()或 访问数据库的errors属性 ModelForm总是触发form 验证,但从Django 1.2开始 还将触发模型验证。 这有清洁的副作用 传递给ModelForm的模型 构造器。例如,打电话 表单上的“”是否有效()将转换为 您的模型上的任何日期字段 实际日期对象 从。从逻辑上讲,这
class SomeModel(models.Model):
Somefield = models.CharField(unique=True)
然后,就模型表单而言,验证字段TextInputField
对任何值都有效。但是,从模型的角度来看,任何值都不行——该值必须是唯一的
描述了验证机制。基本上,对模型调用full\u clean
会导致该模型按照OO范式检查自己的字段。因此,可以更新模型的内存映像,并对其进行验证,以检查它是否可以实际写入数据库
因此它是有意义的,因为你的守卫:
if form.is_valid():
确实应该确保:
form.save()
可能真的会发生