【发布时间】:2011-01-17 21:07:01
【问题描述】:
在继承 db.models.Model 时,有时必须添加额外的检查/约束。
例如我有一个带有start_date 和end_date 的Event 模型。
我想在字段或模型中添加验证,以便end_date > start_date。
有多少种可能的方法来做到这一点?
至少我知道这可以在models.Model 之外在ModelForm 验证中完成。
但是如何附加到字段和models.Model?
【问题讨论】:
-
您建议的约束不能定义为 sql 语句,因此您期望从此类检查中得到的唯一更改是管理员形式。您可以通过覆盖该类的 adminform 保存功能来做到这一点。 umnik700 的回答显示了您如何做到这一点。
-
其实SQL中有一个“CHECK”约束。 PostgreSQL 支持这个:postgresql.org/docs/8.1/static/ddl-constraints.html 但是,MySQL 不支持这个:CHECK 子句被解析但被所有存储引擎忽略(参见dev.mysql.com/doc/refman/5.5/en/create-table.html)
-
@slack3r:谢谢。我知道有一个检查,但我只希望它在更高级别,在 Django 元数据声明级别。我避免架构更改。
-
是的,我知道,这只是回复 Numenor 说这不能定义为 sql 语句 :)
-
在这种情况下,我会考虑使用 DateRange 字段。这将确保 start
标签: django django-models django-forms