2009-04-30 26 views

回答

9

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

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

1

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

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