اگه با Odoo کار کرده باشی، میدونی که این سیستم مثل یه جعبه ابزار همه کاره برای کسب و کارهاست. هر چیزی که توی اودو ذخیره میشه، از مشتری و محصول گرفته تا فاکتور و کارمند، پشتش یه مدل داده خوابیده. بین همه مدل ها (regular، transient، abstract)، مدل های regular یا همون Regular Models نقش ستون فقرات رو دارن. بدون اون ها هیچ ماژولی درست کار نمیکنه.
تو این مقاله میخوایم خیلی راحت و بی تکلف توضیح بدیم Regular Models دقیقا چی هستن، چطور کار میکنن، چرا مهمن و چطور میشه ازشون توی Odoo 19 بهترین استفاده رو کرد.
Regular Models دقیقا چی هستن؟
مدل های regular همون مدل های استانداردی هستن که داده های پایدار رو توی دیتابیس ذخیره میکنن. یعنی هر چیزی که باید برای همیشه بمونه، مثل مشتری (Customer)، فروشنده (Vendor)، محصول (Product)، فاکتور (Invoice) یا کارمند (Employee)، توی یه Regular Model نگهداری میشه.
تعریفش هم خیلی ساده ست:
class MyModel(models.Model):
_name = "my.model"
به محض اینکه این کلاس ساخته بشه، اودو یه جدول دیتابیس با همین اسم درست میکنه و هر فیلدی که توی مدل تعریف کرده باشی، میشه ستون اون جدول.
ویژگی های مهم Regular Models
۱. ذخیره سازی دائمی
هر داده ای که توی Regular Model ساخته بشه، برای همیشه توی دیتابیس PostgreSQL میمونه. برای همین برای رکوردهای اصلی مثل سفارش فروش (Sales Order)، سفارش خرید (Purchase Order) یا حرکت های انبار (Stock Move) استفاده میشن.
۲. یکپارچگی با Odoo ORM
Odoo ORM یه لایه خیلی قدرتمنده که کار با دیتابیس رو آسون میکنه. امکاناتش شامل:
- عملیات
CRUD (ساخت، خوندن، ویرایش، حذف) - قوانین دسترسی (
Record Rules) - منطق تجاری با متدهای
Python - فیلدهای رابطه ای برای اتصال مدل ها
- منطق
onchange وcompute
به لطف ORM، خیلی کم پیش میاد که لازم باشه مستقیم SQL بنویسی.
۳. پشتیبانی از منطق تجاری
با Regular Models میتونی قوانین کسب و کار رو خیلی راحت با متدهای Python اضافه کنی. مثلا:
-
create() برای ساخت رکورد -
write() برای ویرایش رکورد -
unlink() برای حذف رکورد - متدهای
compute برای محاسبات - متدهای
onchange برای واکنش به تغییرات
این باعث میشه کدت تمیز و قابل نگهداری بمونه.
۴. اتصال به رابط کاربری
هر Regular Model به صورت خودکار به ویوهای مختلف اودو وصل میشه:
-
Form View -
Tree View -
Kanban View -
Search View -
Calendar ، Gantt ، Pivot
یعنی داده ها خیلی راحت در دسترس کاربرهای بخش های مختلف قرار میگیرن.
یه مثال ساده از Regular Model در Odoo 19
from odoo import models, fields
class Student(models.Model):
_name = "school.student"
_description = "Student Information"
name = fields.Char("Student Name", required=True)
age = fields.Integer("Age")
grade = fields.Selection([
('a', 'Grade A'),
('b', 'Grade B'),
('c', 'Grade C')
], "Grade")
اینجا:
- یه جدول دیتابیس به اسم
school_student ساخته میشه. - فیلدها میشن ستون های جدول.
- رابط کاربری اودو خودش فرم و لیست برای این مدل درست میکنه.
چرا Regular Models اینقدر مهمن؟
۱. پایه همه داده های کسب و کار
هر اپلیکیشن توی اودو، از فروش و CRM گرفته تا انبار و منابع انسانی، روی Regular Models بنا شده.
۲. سفارشی سازی راحت
میتونی مدل های موجود رو خیلی راحت ارث بری (inherit) کنی و ویژگی های جدید اضافه کنی بدون اینکه کد اصلی رو دست بزنی:
class InheritPartner(models.Model):
_inherit = "res.partner"
customer_code = fields.Char("Customer Code")
این یعنی توسعه سریع و بی دردسر.
۳. روابط داده ای بهتر
با فیلدهای رابطه ای مثل Many2one، One2many و Many2many میشه ساختارهای پیچیده کسب و کار رو خیلی راحت مدل کرد.
۴. امنیت و کنترل دسترسی
اودو کنترل دقیق امنیتی میده:
- دسترسی ها (
Access Rights) - قوانین رکورد (
Record Rules) -
ACL ها در سطح مدل
برای توضیح کامل و مرحله به مرحله درباره امنیت و کنترل دسترسی در اودو، میتونی مقاله صفر تا صد مدیریت دسترسی ها در Odoo رو بخونی.
خلاصه، Regular Models توی Odoo 19 دقیقا همون چیزی هستن که داده های پایدار کسب و کار رو ذخیره میکنن، منطق تجاری رو پشتیبانی میکنن، با رابط کاربری یکپارچه ان و امنیت رو تضمین میکنن. اگه قصد داری ماژول سفارشی بسازی، قابلیت های موجود رو توسعه بدی یا یه سیستم کامل طراحی کنی، باید Regular Models رو مثل کف دستت بلد باشی.
با یاد گرفتن Regular Models میتونی اپلیکیشن هایی بسازی که هم مقیاس پذیر باشن، هم کاربر پسند، و هم دقیقا مطابق با workflow واقعی کسب و کار.