7

在考虑性能时,

1) 在 python/django 或数据库中实现和检查约束是否更好?或者可能两者兼而有之?

2) 在 django 中,最好在哪里检查约束?例如在模型保存功能中?

4

1 回答 1

7

Django 已经实现了直接到数据库级别的通用约束,例如主键/外键和唯一(针对单个字段或组合)。对于更具体的约束,放置它们的最佳位置是在 Django 的模型验证方法中。这样,您就可以利用 Django 的特性,例如模型继承和模型表单,而无需分别在每个继承模型或表单处理例程中重写约束检查。

您的验证方法的性能将与您预期的一样好。事实上,在某些情况下您不必访问数据库,因此性能可能会比在数据库级别实现相同的限制更好。例如,如果您碰巧检查要保存的对象中的模型字段值的某种组合(而不是针对其他已保存的对象),您不必访问数据库,而是在 python 对象级别快速进行检查。

于 2013-07-07T09:21:35.793 回答