توسعه Odoo

Welcome!

This community is for professionals and enthusiasts of our products and services.
Share and discuss the best content and new marketing ideas, build your professional profile and become a better marketer together.

6

فیلدهای many2one و one2many و many2many

آواتار
ساناز میرباقری

سلام فیلدهای فیلدهای many2one و one2many و many2many دقیقا چیکار میکنن و چگونه با هم در ارتباط اند؟

آواتار
انصراف
2 پاسخ ها
3
آواتار
فردین مردانی
بهترین پاسخ

فیلدهای چند به چند، چند به یک و یک به چند در اودوو ۱۶ ویراوب ۱۲۳ برای ایجاد ارتباطات بین دو مدل مختلف استفاده می شوند. این ارتباطات می توانند یک طرفه یا دو طرفه باشند. برای درک بهتر، به مثال های زیر توجه کنید امیدوارم برای شما مفید باشن:

• فیلد چند به یک (Many2one): این فیلد برای اتصال یک رکورد از مدل فعلی به یک رکورد از مدل دیگر استفاده می شود. به عبارت دیگر، هر رکورد از مدل فعلی می تواند فقط یک رکورد از مدل دیگر را به عنوان پدر یا مرجع داشته باشد. برای مثال، اگر ما یک مدل برای محصولات و یک مدل برای دسته بندی محصولات داشته باشیم، می توانیم یک فیلد چند به یک به نام category_id در مدل محصولات تعریف کنیم که به مدل دسته بندی محصولات اشاره می کند. این کد می تواند چنین باشد:

category_id = fields.Many2one('product.category', 'Category')

این کد یک فیلد چند به یک با نام category_id در مدل محصولات ایجاد می کند که به مدل product.category اشاره می کند و عنوان آن در رابط کاربری Category است.

• فیلد یک به چند (One2many): این فیلد برای ایجاد ارتباط دو طرفه بین دو مدل استفاده می شود. این فیلد در مدل پدر تعریف می شود و به مدل فرزند اشاره می کند. این فیلد می تواند چندین رکورد از مدل فرزند را در خود ذخیره کند. برای مثال، اگر ما یک مدل برای سفارشات و یک مدل برای خطوط سفارش داشته باشیم، می توانیم یک فیلد یک به چند به نام order_line_ids در مدل سفارشات تعریف کنیم که به مدل خطوط سفارش اشاره می کند. این کد می تواند چنین باشد:

order_line_ids = fields.One2many('order.line', 'order_id', 'Order Lines')

این کد یک فیلد یک به چند با نام order_line_ids در مدل سفارشات ایجاد می کند که به مدل order.line اشاره می کند و نام فیلد چند به یک متناظر در مدل فرزند order_id است. عنوان این فیلد در رابط کاربری Order Lines است.

• فیلد چند به چند (Many2many): این فیلد برای ایجاد ارتباط دو طرفه بین دو مدل استفاده می شود که هر کدام می توانند چندین رکورد از مدل دیگر را داشته باشند. برای مثال، اگر ما یک مدل برای کتاب ها و یک مدل برای نویسندگان داشته باشیم، می توانیم یک فیلد چند به چند به نام author_ids در مدل کتاب ها تعریف کنیم که به مدل نویسندگان اشاره می کند. این کد می تواند چنین باشد:

author_ids = fields.Many2many('book.author', 'Book Authors')

این کد یک فیلد چند به چند با نام author_ids در مدل کتاب ها ایجاد می کند که به مدل book.author اشاره می کند و نام جدول ارتباطی در پایگاه داده Book Authors است. عنوان این فیلد در رابط کاربری نیز Book Authors است.

آواتار
انصراف
2
آواتار
ساناز میرباقری
بهترین پاسخ


فیلد many2one مثل ارتباط چندین اتاق با یک خانه است


مطابق تصویر یک خانه میتونه چندین اتاق داشته باشه . هر اتاق هم متعلق به یک خانه است.


فیلد one2many در واقع تو دیتابیس ساخته نمیشه ولی خروجیش محاسبه میشه و در دسترس ما قرار میگیره . و این رابطه اون درست برعکس تصویر بالا است. فیلد one2many ارتباط بین یک خانه با چندین اتاق را نشا ن میده


فیلد many2many مثلا ارتباط بین چندین دانشگاه با چندین گروه آموزشی است.

هر دانشگاه میتونه چندین گروه آموزشی داشته باشه و هر گروه آموزشی میتونه تو چندین دانشگاه ارائه بشه. طبق مثال بالا دانشگاه شیراز دو گروه ریاضی و علوم را داره و دانشگاه تهران فقط گروه ریاضی را داره

آواتار
انصراف