2012-06-04 12 views
7

मूल विचारों को प्रदर्शित करता हैOpenERP हमेशा के बजाय विरासत में मिला है दृश्य मूल

<record id='view_2' model='ir.ui.view'> 
    <field name="name">view.name</field> 
    <field name="model">my.object</field> 
    <field name="priority" eval="10"/> 
    <field name="inherit_id" ref="view_1"/> 
    <field name="type">form</field> 
    <field name="arch" type="xml"> 
     ... 
    </field> 
</record> 

तो क्या होता है OpenERP हमेशा प्राथमिकता मूल्य अनदेखी विरासत में मिला है दृश्य प्रदर्शित करता है। क्या यह अपेक्षित व्यवहार है, या कुछ और है जो मुझे याद आ रही है?

इस अपेक्षित व्यवहार है, तो :-)

आगे पढ़ें मैं my.object को many2one क्षेत्र के साथ my.second.object है, और जब मैं इस क्षेत्र से my.object बनाना चाहते हैं, मैं थोड़ा अलग रूप खोलना चाहते हैं my.object देखें। मैं सिर्फ उस उद्देश्य के लिए एक अलग दृश्य बनाने की कोशिश कर रहा हूं, लेकिन जैसा कि आप देखते हैं कि यह इतना आसानी से काम नहीं करता है (या यह करता है?)।

किसी भी मदद की सराहना की जाती है।

उत्तर

14

हां यह अपेक्षित व्यवहार है। किसी दृश्य की प्राथमिकता का अनुरोध करने पर उपयोग की प्राथमिकता केवल मुख्य दृश्य का चयन करने के लिए कार्य करती है। विरासत वाले विचार "पैच दृश्य" हैं जो उनके दृष्टिकोण के बच्चों की तरह कार्य करते हैं, और कभी भी "मुख्य विचार" के रूप में नहीं चुना जा सकता है। जब वह दृश्य प्रदर्शित होता है तो वे हमेशा अपने मूल दृश्य के शीर्ष पर लागू होते हैं।

यदि आप किसी निश्चित मॉडल के लिए वैकल्पिक दृश्य चाहते हैं तो आपको एक नया स्टैंड-अलोन व्यू परिभाषित करना चाहिए जो किसी अन्य से प्राप्त नहीं होता है। के एक बच्चे के रूप में,

  • यह my.second.object के रूप व्यू में इनलाइन परिभाषित करें: उस दृश्य my.second.object को देखते के संदर्भ में केवल इस्तेमाल किया जा करने के लिए है, तो वहाँ OpenERP का उपयोग यह सुनिश्चित करने के लिए दो आम चालें कर रहे हैं <field> तत्व। यह संस्करण के आधार पर सभी ओपनईआरपी ग्राहकों में काम नहीं कर सकता है, और आमतौर पर o2m लाइनों के लिए इनलाइन फॉर्म दृश्यों को घोषित करने के लिए सबसे अच्छा काम करता है।
  • इसे कम प्राथमिकता (उदा। 32) के साथ स्टैंड-अलोन व्यू के रूप में घोषित करें और फ़ील्ड में many2one फ़ील्ड में एक जादू संदर्भ कुंजी डालें, जिसका उपयोग करना चाहिए। जादू कुंजी <view_type>_view_ref रूप में है, और मान वांछित दृश्य का एक्सएमएल आईडी होना चाहिए। यह हर जगह काम करना चाहिए।
<!-- Example 1: inline form view --> 
<form string="My second object"> 
    <field name="my_object_id"> 
     <form string="My object inline view"> 
      <field name="name"/> 
     </form> 
    </field> 
</form> 

<!-- Example 2: explicitly ask for special view using magic key --> 
<form string="My second object"> 
    <field name="my_object_id" context="{'form_view_ref': 'module.my_object_form2'}"/> 
</form> 

संदर्भ के लिए, OpenERP प्रलेखन कि बनाने और संदर्भ विशिष्ट दृश्यों का उपयोग कर के लिए विकल्पों में से सबसे बताते हैं की this page पर एक नजर है।

नोट: आप form_view_ref और फार्म देखने से इस्तेमाल किया है, तो अगर आप किसी भी बटन जो तब कुछ अन्य मॉडल का एक और रूप देखने खोल रहा है है यह आप त्रुटि दे देंगे। यह उसी फ़ॉर्म दृश्य को खोलने का प्रयास करेगा, जिसे आप किसी अन्य मॉडल के लिए form_view_ref में पास कर चुके हैं।

+0

हालांकि दो तरीकों में से कोई भी मेरी समस्या को हल करने के लिए __clean__ तरीका प्रदान नहीं करता है, लेकिन यह मेरे प्रश्न का उत्तर देता है। चीयर्स – and3p

+0

@ और 3p: सुनिश्चित नहीं है कि आप अपनी समस्या का समाधान करने के लिए "साफ रास्ता" के रूप में क्या उम्मीद करते हैं? क्या आपका मतलब है कि आपने सोचा था कि OpenERP अलग-अलग व्यवहार करेगा या अन्य विकल्पों की पेशकश करेगा? क्या आप दूसरी तरह की दृश्य विरासत चाहते हैं जो "मुख्य विचार" की प्रतिलिपि बनाने की अनुमति देता है? वर्तमान प्रणाली मॉड्यूल को एक दूसरे को स्पष्ट रूप से विस्तारित करने के लिए डिज़ाइन की गई है, जो उनके "पैरेंट" द्वारा परिभाषित विचारों के स्पॉट-संशोधनों को करके, सभी प्रकार के संयोजनों को अनुमति देता है। – odony

+0

ठीक है, अभी मुझे 'my.second.object'' के साथ उपयोग किए जाने के लिए अपने 'मुख्य दृश्य' के दृश्य को डुप्लिकेट (कुछ संशोधनों को छोड़कर) बनाना था, जो कोड रिडंडेंसी पेश करता था। मैं उम्मीद कर रहा था कि अगर मैं दृश्य विरासत का उपयोग करता हूं तो मुझे कोड डुप्लिकेशन का सहारा लेने की आवश्यकता नहीं होगी, लेकिन 'विरासत दृश्य "पैच दृश्य" ... के रूप में अन्य विकल्प संभव नहीं हैं। अगर मुझे विरासत देखने के बारे में मेरी समझ गलत है तो मुझे सही करें। – and3p

1

<field name="field_from_original_view"> में आपने "स्थिति" क्या परिभाषित की है?

<record id='view_2' model='ir.ui.view'> 
    <field name="name">view.name</field> 
    <field name="model">my.object</field> 
    <field name="priority" eval="10"/> 
    <field name="inherit_id" ref="view_1"/> 
    <field name="type">form</field> 
    <field name="arch" type="xml"> 
     <field name="field_from_original_view" position="after" (or before)> 
      <field name="inherit1" /> 
      <field name="inherit2" /> 
      <field name="inherit3" /> 
     </field> 
    </field> 
</record> 
+0

मैंने 'प्रतिस्थापित' का उपयोग किया, लेकिन क्या यह मेरे प्रश्न के लिए प्रासंगिक है? समस्या यह है कि OpenERP मेरे विरासत दृश्य का उपयोग करता है, जहां भी इसे मूल का उपयोग करना चाहिए। – and3p

+0

शायद जब आप "प्रतिस्थापित" ओपनरपी का उपयोग करते हैं तो मूल दृश्य को विरासत में बदल दिया जाता है? – voy

+0

ओह, क्षमा करें, मुझे लगता है कि मैंने आपके प्रश्न को गलत समझा है ... – voy

0

विरासत में आपके मॉडल का मानक रूप बनाने की संभावना नहीं हो सकती है ताकि इसे स्वचालित रूप से प्रस्तुत किया जा सके।

लेकिन यदि आप एक विशिष्ट कार्य को देखते हैं -> एक 2many फ़ील्ड के लिए विरासत स्वरूप दृश्य खोलें उदा .; वहाँ है। संदर्भ चर 'form_view_ref' को 'MODULE.VIEW_ID' पर सेट करें।

<field name="myOne2ManyField" context="{'form_view_ref': 'myModule.myInheritedView'}/> 

अभी भी ओडू 9.0 के साथ काम करता है।

संबंधित मुद्दे