【发布时间】:2013-07-04 19:55:44
【问题描述】:
在考虑性能时,
1) 在 python/django 或数据库中实现和检查约束是否更好?或者两者都有?
2) 在 django 中,哪里最好检查约束?例如在模型保存功能中?
【问题讨论】:
-
该数据库中的约束用于优化查询性能等。因此,您可以在任何地方验证约束,但我建议保持数据库中的约束启用并验证以供优化器使用。
标签: python sql django postgresql
在考虑性能时,
1) 在 python/django 或数据库中实现和检查约束是否更好?或者两者都有?
2) 在 django 中,哪里最好检查约束?例如在模型保存功能中?
【问题讨论】:
标签: python sql django postgresql
Django 已经实现了通用约束,例如主键/外键和唯一(对于单个字段或组合)直接到数据库级别。对于更具体的约束,放置它们的最佳位置是 Django 的model validation methods。这样您就可以利用 Django 的特性,例如模型继承和模型表单,而无需分别重写每个继承模型或表单处理例程中的约束检查。
您的验证方法的性能将与您想象的一样好。事实上,在某些情况下您不必访问数据库,因此性能可能会比在数据库级别实现相同的限制更好。例如,如果您碰巧在要保存的对象中检查模型字段值的某种组合(而不是针对其他已保存的对象),您不必访问数据库,而是在 python 对象级别快速进行检查。
【讨论】:
unique 约束,因为这些约束是由 Django 推送到数据库的,而是取决于其他行的任何其他类型的约束?