2015-07-07 7 views
5

Openerp में कार्यात्मक फ़ील्ड संपादन योग्य कैसे करें?Openerp में एक कार्यात्मक फ़ील्ड संपादन योग्य बनाओ?

जब हम

'capname': fields.function(
    _convert_capital, string='Display Name', type='char', store=True 
), 

यह केवल पढ़ने के लिए है प्रदर्शित किया जाएगा बना सकते हैं और हम पाठ संपादित करने में सक्षम नहीं कर सकते।

हम इस क्षेत्र को कैसे संपादन योग्य बनाते हैं?

+1

odoo का कौन सा संस्करण आप काम कर रहे यह एक समारोह गणना पीछे और प्रासंगिक क्षेत्रों की स्थापना का नाम है? –

+0

ओपनरप संस्करण 7 –

उत्तर

2

फ़ील्ड को संपादन योग्य बनाने के लिए आपको एक व्यस्त कार्य जोड़ना होगा। ओपनरपी v7 में इस पैरामीटर को fnct_inv कहा जाता है। एक उदाहरण:

def _get_test(self, cr, uid, ids, name, args=None, context=None): 
    result = dict.fromkeys(ids, False) 
    for line in self.browse(cr, uid, ids, context=context): 
     if line.test: 
      result[line.id] = line.test 
    return result  

def _set_test(self, cr, uid, id, field_name, field_value, args=None, context=None): 
    obj = self.browse(cr, uid, id) 
    for record in obj: 
     if record.test != field_value: 
      # The record already exists 

      ... 

      cr.execute(
       'UPDATE your_table ' 
       'SET test=%s ' 
       'WHERE id=%s', (field_value, id) 
      ) 
     else: 
      # It is a new record 
      # (or the value of the field was not modified) 

    return True 

_columns = { 
    'test': fields.function(
     string='String for testing', 
     fnct=_get_test, 
     fnct_inv=_set_test,    
     type='char', 
     size=50, 
     store=True, 
    ), 
} 
+3

क्या आप वाकई मैन्युअल रूप से डाला गया मान ओवरराइट नहीं किया जाएगा और अगली पुन: गणना पर खो जाएगा? –

+0

आप सही हैं, मैं अपना जवाब संपादित करने जा रहा हूं। आप अपने उत्तर में ओडू 8 एपीआई का उपयोग कर रहे हैं, लेकिन मैं ओपनईआरपी वी 7 एपीआई का उपयोग करने जा रहा हूं क्योंकि जिस व्यक्ति ने पूछा वह OpenERP 7 का उपयोग कर रहा है। – ChesuCR

6

एक गणना वाले फ़ील्ड में एक फ़ंक्शन होता है जो स्वचालित रूप से कुछ स्रोत डेटा पर इसके मान की गणना करता है।

इसे उलटा ऑपरेशन जोड़ना संभव है, स्रोत डेटा को मैन्युअल रूप से सेट किए गए मान के आधार पर अपडेट करना, इस प्रकार इसे संपादन योग्य बनाना।

documentation से:

एक गणना मैदान पर मूल्य निर्धारित करने की अनुमति के लिए, उलटा पैरामीटर का उपयोग करें।

उदाहरण कोड:

document = fields.Char(compute='_get_document', inverse='_set_document') 

def _get_document(self): 
    for record in self: 
     with open(record.get_document_path) as f: 
      record.document = f.read() 
def _set_document(self): 
    for record in self: 
     if not record.document: continue 
     with open(record.get_document_path()) as f: 
      f.write(record.document) 
संबंधित मुद्दे