仅通过表单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。