Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Artificial Intelligence
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
    • Meet an advisor
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Get a demo
  • Pricing
  • Help
You need to be registered to interact with the community.
All Posts People Badges
Tags (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Tags (View all)
odoo accounting v14 pos v15
About this forum
Help

many2one dynamic list

Subscribe

Get notified when there's activity on this post

This question has been flagged
4 Replies
6089 Views
Avatar
sameer alhwety

Hello , 

I have a many2one fields , and i want to hide some record from its list .

What's the function that get all list of many2one field and add it to menu list ?

UPDATED

 What if i want to change domain for field in many2one object ?


example : 


class Class_A(osv.osv):
    _name = "class.a"
    _columns = {
        'name': fields.char('Name'),
     }

class Class_B(osv.osv):
    _name = "class.b"
    _columns = {
        'target_field': fields.many2one('class.a')
        'class_b_id': fields.many2one('class.c'),
     }

class Class_C(osv.osv):
    _name = "class.c"
    _columns = {
        'user_id': fields.many2one('res.partner'),
        'class_b_mto': fields.one2many('class.b','class_b_id'),
     }

 

Class C in user_id field have on_change function , Now if i want to change the domain of target_field in class B not the same class of user_id . What i have to do ??

 

1
Avatar
Discard
Avatar
fourgaver6513
Best Answer

on_change can return 'domain' key which is a dictionary whose keys are the (m2o, m2m) name of the fields whose domain need to be changed and whose values are with their corresponding domain.

3
Avatar
Discard
Ivan

Thank you for repeating my answer.

sameer alhwety
Author

Thanks , It works good , but i have another issue , Please See Updated Question.

Avatar
Jérémy Kersten (jke)
Best Answer

Hello,

You can add a domain in the declaration of the field into the view to add a filter for the list...

 

Eg: 

<field name="partner_id" domain="[('name','=ilike','z%')]" />

It will only display a list of partner with name starting with "z"

 

JKE

2
Avatar
Discard
sameer alhwety
Author

Thanks , but i have another issue , Please See Updated Question.

Avatar
Med Said BARA
Best Answer

 By convention, many2one fields end with '_id'

What you have to do, to filter out some records is to add a domain filter in your field (in xml file).

For example, in your .py file: 'yourfield_id': fields.many2one('your.model','Something'),

And in you xml: <field name="yourfield_id" domain="[('Something', '=', True)]"/>  (or any other valid condition)

 

2
Avatar
Discard
sameer alhwety
Author

Thanks , but i have another issue , Please See Updated Question.

Med Said BARA

Without a concrete example i can't figure out what you really want. But, what you should remember is, with a fields.many2one the relation is from the current model to another model where a record from the current model can be linked to the same record of the other model. My advice is, try to study the code from the sale module (sale.py and sale_view.xml files) to see how the many2one relation is build, how the on_change method and domain filter are used... waiting for more comments ...

Avatar
Ivan
Best Answer

If by dynamic you mean the list of selection can change if the value of another field changed, then you need to implement on_change mechanism on the triggering field.  on_change can return 'domain' key which is a dictionary whose keys are the (m2o, m2m) name of the fields whose domain need to be changed and whose values are with their corresponding domain.

1
Avatar
Discard
sameer alhwety
Author

Thanks , but i have another issue , Please See Updated Question.

Ivan

Sameer, it would be best to post another question if you have another issue. Anyway, the answer to your question is still the same. Now, you need to answer this first: which field will trigger the domain change for target_field (which is obviously should be from Class B's form view and should be Class B's field). Then you implement on_change on that field.

Ivan

Or do you actually want to domain / filter class_b_mto by it's target_field's value? Which is also possible.

sameer alhwety
Author

I try to trigger the domain of target_fields from class c , but not trigger , and the domain not changed to new domain . the problem that when i make some records of class c and apply the my default domain that will cause a problem , the problem is the domain will hide some record that not belong to domain . thanks for replay , any idea how to solve that problem ?

Ivan

You cannot trigger domain of target_fields from class C. I'm not sure what you are trying to achieve here.

Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Sign up
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk Slovenščina Español (América Latina) Español Svenska ภาษาไทย Türkçe українська Tiếng Việt

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now