在django或数据库中检查约束的位置?

时间:2013-07-07 08:28:00

标签: python sql django postgresql

在考虑表现时,

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

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

1 个答案:

答案 0 :(得分:7)

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

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