仅通过表单API处理Django模型验证?

问题描述:

这是创建自定义模型验证的唯一方法吗?使用表单来做到这一点?如果我想通过表单以外的方式将数据发送到数据库,该怎么办?仅通过表单API处理Django模型验证?

当前Django不提供任何模型级验证(除了基本的“NOT NULL”,“UNIQUE”和长度验证)。这是在TODO列表上,但很可能不适合即将发布的1.1版本。

您可以在您的模型的save()方法中执行验证相关任务或使用before_save信号(引发信号处理程序中的异常会导致事务回滚)。

通常,您应该能够通过内置的field types及其选项或model's meta options来处理您想要的内容。您也可以override the save method执行验证/卫生。如果这还不够,您可以创建自己的field type

问题是没有良好的预期行为。应该发生什么?应该提出例外吗?这些字段实际上只是数据库级别的抽象,所以不应该有比数据库需要知道更多的信息。

模型验证将很快在Django 1.2版中提供。它现在可用现在如果你使用当前的Django svn结帐中继线。

各种clean方法现在可用。有关详细信息,请参见http://docs.djangoproject.com/en/dev/ref/models/instances/#id1