2015-07-31 5 views
5

मैंने देखा कि ओडू ईआरपी पर 2 प्रकार की बाधाएं हैं। लेकिन मैं जानना चाहता हूं कि _sql_constraints बनाम _constraints के बीच क्या अंतर है?ओपनईआरपी/ओडू पर _sql_constraints और _constraints के बीच अंतर?

_sql_constraints = { 
    ('email_uniq', 'unique(email)', ' Please enter Unique Email id.') 
} 

_constraints=[ 
    (_check_qty_and_unitprice, u'Qty must be more than 0',['product_qty', 'cost_unit']), 
] 

उत्तर

6

_sql_constraints यह PostgreSQL डेटाबेस तरफ बाधा सेट हो जाएगा मतलब है।

_sql_constraints = [ 
    ('email_uniq', 'unique(email)', ' Please enter Unique Email id.'), 
    ] 

कहाँ:

  • email_uniq का मतलब बाधा नाम,

  • unique(email) मतलब है unique बाधा का नाम है। email एक फ़ील्ड नाम है जो उस क्षेत्र पर बाधा लागू करेगा।

  • 'Please enter Unique Email id.' एक संदेश है और जब यह बाधा का उल्लंघन किया जाएगा तो यह पॉप-अप विंडो पर प्रदर्शित होगा।

_constraints पाइथन बाधा है। हम बाधाओं को सेट करने के लिए हमारे तर्क दे सकते हैं।

_constraints = [ 
    (_check_qty_and_unitprice, u'Qty must be more than 0', ['product_qty', 'cost_unit']), 
    ] 

कहाँ: उदाहरण के लिए:

  • _check_qty_and_unitprice एक समारोह का नाम जहां हम अपने तर्क लागू करने की आवश्यकता है।

  • 'Qty must be more than 0' संदेश है और यह पॉप-अप विंडो पर प्रदर्शित करेगा जब बाधा का उल्लंघन किया जा सकता है (अजगर फ़ंक्शन False)।

  • ['product_qty', 'cost_unit'] फ़ील्ड नाम की एक सूची है जिसका अर्थ है कि इन दोनों क्षेत्रों के लिए बाधा आ जाएगी।

नई Odoo एपीआईpython constraint के रूप में एक नए और सरल डेकोरेटर की है। नीचे दिया गया उदाहरण इस प्रकार लिखा जा सकता है:

from openerp.exceptions import ValidationError 

@api.constraints('product_qty', 'cost_unit') 
def _check_something(self): 
    for record in self: 
     if record.product_qty < 1: 
      raise ValidationError("Qty must be more than 0") 
संबंधित मुद्दे