2015-08-21 9 views
12

मैं कई संगठन अन्य प्रकार के माता पिता हो सकता है कि जो प्रकार का वर्णन करने वाली many2many संबंध के साथ प्रकार (उदा विभाग उप विभाग और कार्य समूह के लिए माता-पिता हो सकता है) है। यह एक सख्त पदानुक्रम नहीं है, इसलिए many2many संबंध (कार्यदल अन्य कार्य समूहों के लिए माता-पिता हो सकता है)।Odoo 8: Many2many डोमेन फिल्टर

मेरे पास मेरे संगठन_टाइप ऑब्जेक्ट पर दो फ़ील्ड हैं: allowed_parent_type_ids और उलटा allowed_children_type_ids

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

मेरी फार्म को देखते हुए, मैंने कोशिश की:

<field 
    name="organization_type_id" 
    domain="[('id', 'in', parent_id.organization_type_id.allowed_children_ids)]" 
    /> 

मैं अपने संगठन वस्तु पर अनुमति दी प्रकार के साथ संबंधित क्षेत्र डालने की कोशिश की, लेकिन मैं हमेशा एक त्रुटि संदेश के साथ समाप्त होता है। मेरे पिछले प्रयास किया गया था:

domain=[('id', 'in', allowed_type_ids)] 

एक त्रुटि संदेश देता है कि:

TypeError: not all arguments converted during string formatting 

ग्राहक वास्तव में "allowed_type_ids" = [0,1,2] और की तरह एक JSON ऑब्जेक्ट को हासिल करेगा अगर मैं [0,1,2] साथ डोमेन अभिव्यक्ति में allowed_type_ids की जगह कोई त्रुटि नहीं है और मुझे अपने चयन में तीन संगठन प्रकार मिलते हैं ...

+1

डोमेन = "[('आईडी', 'इन', allow_children_ids [0] [2]) का उपयोग करने का प्रयास करें]" –

उत्तर

7

इसे आजमाएं:

<field 
    name="organization_type_id" 
    domain="[('id', 'in', parent_id.organization_type_id.allowed_children_ids.ids)]" 
    /> 

जबकि allowed_children_ids रिकॉर्ड का एक सेट है, allowed_children_ids.ids उन रिकॉर्ड की आईडी की एक सूची है।

तुम भी दूसरी तरफ से इस संपर्क कर सकते हैं। यह तेजी से काम करना चाहिए और हो घटना:

<field 
    name="organization_type_id" 
    domain="[('allowed_parent_type_ids', '=', parent_id.organization_type_id)]" 
    /> 
+1

मुझे काम करने का पहला समाधान नहीं मिला (मैंने कुछ ऐसा करने की कोशिश की थी), लेकिन दूसरा दृष्टिकोण काम किया। मैंने ऑपरेटर के रूप में 'इन' का इस्तेमाल किया। यह "आईडी में आईडी" रखने के लिए तर्क प्रतीत नहीं होता है, लेकिन यह काम करता है ... – cgs

2

संपादित करें: यह चाल भी समय मैं संदेश पोस्ट किया है, तो अपने Odoo codebase अधिक जानकारी के लिए https://github.com/odoo/odoo/issues/16072 देख अद्यतित था पर 9.0 और 10.0 में अब और काम नहीं करता।

एक विकल्प के लिए आप मॉड्यूल web_domain_field को एक कोशिश दे सकते हैं। यह यहाँ वर्तमान में है: https://github.com/OCA/web/pull/567


पूर्व जवाब:

एक Many2many पर एक डोमेन आप Odoo पूछे जाने वाले प्रश्न पर ओलिवियर Dony से एक अच्छा जवाब मिल जाएगा करवाने के लिए: https://www.odoo.com/fr_FR/forum/aide-1/question/complex-many2many-domains-in-views-41777#answer_41784

संक्षेप में, आप सही मान पता करने के लिए Many2many मूल्य के रूप में [(6, 0, ids)] तरह टपल की एक सूची है की जरूरत है।

इस प्रकार आप इस तरह एक डोमेन बनाने के लिए आईडी की तुलना करने की जरूरत है:

domain=[('id', 'in', allowed_type_ids[0][2])] 

चेतावनी, इस मामले आपके many2many फ़ील्ड रिक्त है में Odoo 9.0 पर काम नहीं हो सकता है।

+1

मुझे विश्वास है कि आप अनुमति_type_ids [0] [2] (अंतिम ब्रैकेट में 6 के बजाय 2) का उल्लेख करते हैं? - और यह सुनिश्चित करने के लिए कि सूची मान्य है, शायद यह "allow_type_ids और allow_type_ids [0] [2]" होनी चाहिए। वैसे भी, साफ छोटी सी चाल। ;-) – cgs

+0

@cgs वास्तव में आप सही हैं, मैंने इसे – Yannick

+0

तय किया है क्या आपको पता है कि यह हाल ही में बदल गया है या नहीं? मैं कसम खाता हूं कि यह पिछले कुछ दिनों तक मेरे लिए काम कर रहा था। अब अचानक जब मैं अपने दृश्य में सर्वर से आउटपुट देखता हूं, तो मेरा कस्टम कई 2many फ़ील्ड 'x_my_field: [[6, 0, [id1, id2]] नहीं दिखाता है। यह अब या तो केवल आईडी की एक सरणी दिखाता है, या कभी-कभी यह [2], [1, id1, {}], [1, id2, {}]] जैसे अन्य कई 2 कई आदेशों की एक श्रृंखला दिखाता है। क्या कुछ बदल गया है? मैं ओडू 10 सास का उपयोग कर रहा हूँ। – flyingL123

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