Relations بین Models در اودوو یعنی چی ؟ و چند روابطی بین مدلها وجود دارد ؟
1 پاسخ
Relations Between Models در اودوو به این معناست که چگونه مدل های مختلف در اودوو با یکدیگر ارتباط برقرار می کنند. مدل ها در اودوو نماینده های شی گرای داده های رابطه ای هستند که در پایگاه داده ذخیره می شوند. برای مثال، مدل product.product نماینده هر محصول در اودوو است و مدل sale.order نماینده هر سفارش فروش است. برای ایجاد روابط بین مدل ها، اودوو از چهار نوع فیلد استفاده می کند:
• Many2one: این نوع فیلد برای ایجاد رابطه یک به چند بین دو مدل استفاده می شود. این فیلد یک مقدار عددی را ذخیره می کند که شناسه یک رکورد از مدل مقصد است. برای مثال، فیلد partner_id در مدل sale.order یک فیلد Many2one است که به مدل res.partner اشاره می کند. این فیلد شناسه مشتری سفارش را ذخیره می کند.
• One2many: این نوع فیلد برای ایجاد رابطه چند به یک بین دو مدل استفاده می شود. این فیلد یک لیست از شناسه های چندین رکورد از مدل مقصد را ذخیره می کند. این فیلد باید با یک فیلد Many2one در مدل مقصد هماهنگ باشد. برای مثال، فیلد order_line در مدل sale.order یک فیلد One2many است که به مدل sale.order.line اشاره می کند. این فیلد لیست شناسه های خطوط سفارش را ذخیره می کند. این فیلد با فیلد order_id در مدل sale.order.line هماهنگ است که یک فیلد Many2one است.
• Many2many: این نوع فیلد برای ایجاد رابطه چند به چند بین دو مدل استفاده می شود. این فیلد یک لیست از شناسه های چندین رکورد از مدل مقصد را ذخیره می کند. این فیلد نیاز به یک جدول واسط دارد که رابطه بین دو مدل را ذخیره کند. برای مثال، فیلد category_id در مدل product.template یک فیلد Many2many است که به مدل product.category اشاره می کند. این فیلد لیست شناسه های دسته بندی های محصول را ذخیره می کند. این فیلد از جدول واسط product_template_category_rel استفاده می کند که رابطه بین محصول و دسته بندی را ذخیره می کند.
• Reference: این نوع فیلد برای ایجاد رابطه پویا بین یک مدل و چندین مدل مختلف استفاده می شود. این فیلد یک مقدار رشته ای را ذخیره می کند که شامل نام مدل و شناسه رکورد مقصد است. برای مثال، فیلد reference در مدل account.move.line یک فیلد Reference است که به هر مدلی که مربوط به یک خط حسابداری باشد اشاره می کند. این فیلد مقداری مانند 'sale.order,42' یا 'stock.picking,15' را ذخیره می کند.