الـ ORM في Odoo (الربط الكائني العلائقي) هو طريقة التعامل مع قاعدة البيانات وتنفيذ عملياتها في منصة Odoo. يطبّق الـ ORM مبادئ البرمجة كائنية التوجه (OOP) على عمليات قاعدة البيانات، فيمثّل الجداول ككائنات Python، مما يجعل العمليات برمجية أكثر وأسهل قراءة، ويمنح المطوّرين طريقة أبسط لإدارتها.
فيما يلي المفاهيم الأساسية للـ ORM في Odoo وطريقة عمله:
- النموذج (Model)
النموذج صنف (class) في Python يمثّل جدولاً في قاعدة البيانات. وتحتوي كل وحدة في Odoo على نموذج أو أكثر، وهذه النماذج تنشئ الجداول في قاعدة البيانات وتديرها. إليك مثالاً بسيطاً على نموذج:from odoo import models, fields
class Customer(models.Model):
_name = 'res.partner'
_inherit = 'res.partner'
# Custom fields
is_company = fields.Boolean(string='Is a Company', default=False)
customer_code = fields.Char(string='Customer Code') - الحقل (Field)
تحدد الحقول أنواع البيانات وسلوكها في النموذج، وتمثّل أعمدة جدول قاعدة البيانات. فمثلاً، في نموذج العملاء يمكن تعريف حقول مثل "name" و"email" و"phone": - السجل (Record)
يمثّل السجل إدخالاً محدداً لنموذج في قاعدة البيانات، ويحتوي على قيم الحقول التي يعرّفها النموذج. فمثلاً، يمكن إنشاء سجل عميل كما يلي:new_customer = self.env['res.partner'].create({
'name': 'John Doe',
'email': '[email protected]',
'phone': '123456789'
}) - النطاق (Domain) والسياق (Context)
- النطاق (Domain): يُستخدم لتصفية السجلات وفق شروط معينة، مثل التصفية حسب قيمة حقل:
domain = [('is_company', '=', True)]
companies =
self.env['res.partner'].search(domain) - السياق (Context): يُستخدم لتحديد سلوك العمليات، مثل ضبط لغة المستخدم أو إعدادات أخرى عبر السياق:
context = {'lang': 'en_US'}
products =
self.env['product.product'].with_context(context).search([])
- النطاق (Domain): يُستخدم لتصفية السجلات وفق شروط معينة، مثل التصفية حسب قيمة حقل:
- عمليات CRUD (الإنشاء والقراءة والتحديث والحذف)
- الإنشاء (Create): إنشاء سجل جديد:
new_customer = self.env['res.partner'].create({
'name': 'Jane Doe',
'email': '[email protected]' }) - القراءة (Read): قراءة السجلات:
customer = self.env['res.partner'].browse(1)
print(customer.name) - التحديث (Update): تحديث السجلات:
customer.write({'email': '[email protected]'}) - الحذف (Delete): حذف السجلات:
customer.unlink()
- الإنشاء (Create): إنشاء سجل جديد:
الخلاصة
يمنح الـ ORM في Odoo المطوّرين مرونة وسهولة في إدارة عمليات قاعدة البيانات، مما يسرّع تطوير التطبيقات وتخصيصها. وباستخدامه تُدار عمليات قاعدة البيانات بشيفرة Python بطريقة أوضح وأكثر استدامة.