【发布时间】:2009-04-30 01:44:12
【问题描述】:
这是创建自定义模型验证的唯一方法吗?使用表格来做到这一点?如果我想通过表单以外的方式向数据库发送数据怎么办?
【问题讨论】:
标签: django django-models
这是创建自定义模型验证的唯一方法吗?使用表格来做到这一点?如果我想通过表单以外的方式向数据库发送数据怎么办?
【问题讨论】:
标签: django django-models
目前 Django 不提供任何模型级别的验证(除了基本的“NOT NULL”、“UNIQUE”和长度验证)。这在 TODO 列表中,但很可能不适合即将发布的 1.1 版本。
您可以在模型的save() 方法中执行验证相关任务或使用before_save 信号(在信号处理程序中引发异常将导致事务回滚)。
【讨论】:
模型验证将很快在 Django 1.2 版中可用。如果您使用当前的 Django svn checkout of the trunk,它现在就可以使用。
现在可以使用各种clean 方法。详情请见http://docs.djangoproject.com/en/dev/ref/models/instances/#id1。
【讨论】:
一般来说,您应该能够通过内置的field types 及其选项或model's meta options 处理您想要的内容。您也可以override the save method 执行验证/清理。如果这还不够,您可以创建自己的field type。
问题在于没有良好的预期行为。应该发生什么?是否应该提出异常?这些字段实际上只是数据库级别的抽象,因此其中的信息不应超过数据库需要知道的信息。
【讨论】: