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
    • Approvals
    • 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
    • Estate 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

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Accounting
  • Inventory
  • PoS
  • Project
  • MRP
All apps
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

Double Field Access? Python ORM API Odoo 11. Three dots. Confusion.

Subscribe

Get notified when there's activity on this post

This question has been flagged
OdooPythonORMOdoo11.0
1 Reply
3619 Views
Avatar
Kyle

Double Field Access??!?


I had a question about the ORM API. I am using the Python interface to Odoo. I am looking at this documentation:\https://www.odoo.com/documentation/11.0/reference/orm.html#field-access


The documentation shows how to access a field like so: table_name.column_name. However, there is another example like this: table_name.column_name.other_column_name. What does this mean? Please let me know if this does not make sense. 

Example

>>> record.name
Example Name

>>> record.company_id.name
Company Name

>>> record.name = "Bob"

>>> field = "name"

>>> record[field]
Bob
The above code shows there is a table called "record".  We do not know what columns are in this table however, which adds some confusion. We can see that we can access a column in the "record" table by doing this "record[field]" or like this "record.field".  What I am confused about is what this code is doing  -> \record.company_id.name. This seems  like  the code is referencing a column from another column. Something like if "record" is a table name. Then "company_id" is a column name. Then again "name" is also a column name. How does this make sense? What is returned? Why is the example database not shown? Is the example database shown somewhere else that I am missing? 


Thank-you for reading this!

0
Avatar
Discard
Avatar
Ray Carnes (ray)
Best Answer

This is a way of navigating relationships between tables**

Sometimes the  information  in  the field is  simple,  like  'name'.

Sometimes  the  information  in  the  field  is  relational,  like  'company_id'  and  'country_id'  in  which  case  you  can  navigate  through  the  relationship  to  the  next  table  and  get  information  from  that  one,  at any number of levels.




record.name = "Anne" for record with id =  1 when the record is a User

record.name = "ACME" for record with id = 1 when the record is a Company

record.name = "United States" for record with id = 233  when the record is a Country

record.company_id.name = "ACME" for records with id = 1, 2 and 3 when the record is a User

record.company_id.country_id.name = "United States" for records with id = 1, 2 and 3 when the record is a User

record.company_id.country_id = 233 for records with id = 1, 2 and 3 when the record is a User

record.name = "United  States" for record with id = 233 when the record is a Country


** called models in Odoo because they contain:

  •  fields of simple information stored in the PostgreSQL table
  •  fields representing relationships stored in the PostgreSQL table
  •  fields of information calculated via Python that are not stored in PostgreSQL
  •  business logic defined in Python that is not stored in PostgreSQL.


2
Avatar
Discard
Kyle
Author

So a triple-field is accessing multiple tables? How can I tell which tables are linked together? Or in other words, how can I tell which tables are related? Thank-you for the excellent answer. I think I understand. I at least have a much better understanding now than previously. :)

Ray Carnes (ray)

In Developer Model, use the FIELDS Menu. Filter for the model you are interested in, select just MANY2ONE fields and look at the Related Model column. If the column is blank for a given field, then that field contains simple information. If not, the model it is related to will be show in that column.

Kyle
Author

Excellent. This is very helpful information Ray. 👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍👍 I appreciate you taking the time to help me understand this! 💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻💻

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
Related Posts Replies Views Activity
Odoo python backend question
ORM
Avatar
0
Aug 24
2060
When is write() triggered when updating properties of an object Solved
ORM
Avatar
Avatar
1
Jul 24
3019
How do you add direct attributable cost to an asset...
Odoo
Avatar
0
Oct 22
796
Concurrent updates of a record
ORM
Avatar
Avatar
1
Mar 22
6037
how to add new magic columns?
ORM
Avatar
Avatar
1
Jun 21
4045
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 ภาษาไทย 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