Django पहले से ही सामान्य/विदेशी कुंजी और अद्वितीय (एकल फ़ील्ड या संयोजन के लिए) सामान्य स्तर पर डेटाबेस स्तर तक सामान्य बाधाओं को लागू करता है। अधिक विशिष्ट बाधाओं के लिए, उन्हें रखने के लिए सबसे अच्छी जगह Django के model validation methods के अंदर है। इस तरह आप क्रमशः प्रत्येक विरासत मॉडल या फॉर्म हैंडलिंग रूटीन में अपनी बाधा जांच को फिर से लिखने के बिना मॉडल विरासत और मॉडल रूपों जैसे डीजेगो की विशेषताओं का लाभ उठा सकते हैं।
आपके सत्यापन विधियों का प्रदर्शन उतना ही अच्छा होगा जितना आप इसे बनाते हैं। वास्तव में, ऐसे मामले हो सकते हैं जिनमें आपको डेटाबेस को हिट नहीं करना पड़ेगा, इसलिए प्रदर्शन डेटाबेस स्तर पर समान प्रतिबंध लागू करने से बेहतर होगा। उदाहरण के लिए, यदि आप सहेजने के लिए ऑब्जेक्ट में मॉडल फ़ील्ड मानों के कुछ संयोजन की जांच करते हैं (अन्य सहेजे गए ऑब्जेक्ट्स के विरुद्ध नहीं) तो आपको डेटाबेस को हिट करने की आवश्यकता नहीं है, लेकिन पाइथन ऑब्जेक्ट स्तर पर अपने चेक तेज़ी से करें।
क्वेरी डेटाबेस को अनुकूलित करने के लिए अन्य डेटाबेस के साथ उस डेटाबेस में बाधाओं का उपयोग किया जाता है। इसलिए, आप जहां भी चाहें बाधाओं को मान्य कर सकते हैं लेकिन मैं डेटाबेस में बाधाओं को बनाए रखने और अनुकूलक के उपयोग के लिए मान्य रखने का सुझाव दूंगा। – haki