这是创建自定义模型验证的唯一方法吗?要使用表格吗?如果我想通过表单以外的方式将数据发送到数据库怎么办?
答案 0 :(得分:9)
目前Django不提供任何模型级验证(除了基本的“NOT NULL”,“UNIQUE”和长度验证)。这是在TODO列表中,但很可能不适合即将发布的1.1版本。
您可以在模型的save()
方法中执行与验证相关的任务,或使用before_save
信号(在信号处理程序中引发异常将导致事务回滚)。
答案 1 :(得分:5)
模型验证将很快在Django 1.2版中提供。如果你使用当前的主干Django svn结账,它现在可以 。
现在可以使用各种clean
方法。有关详细信息,请参阅http://docs.djangoproject.com/en/dev/ref/models/instances/#id1。
答案 2 :(得分:1)
通常,您应该能够通过内置的field types及其选项或model's meta options来处理您想要的内容。您还可以override the save method执行验证/卫生。如果这还不够,您可以创建自己的field type。
问题在于没有良好的预期行为。应该怎么办?应该提出例外吗?这些字段实际上只是数据库级别的抽象,所以不应该有更多的信息,而不是数据库需要知道的信息。