การใช้งานคำสั่ง scaffold ใน Odoo

หมวดสำหรับแบ่งบันความ รู้ต่างๆ จะมีหมวดย่อยๆ ในหมวดนี้ เช่น php, SQL, XML, CSS

Moderator: mindphp, ผู้ดูแลกระดาน

Bundith
PHP Hero Member
PHP Hero Member
โพสต์: 131
ลงทะเบียนเมื่อ: 06/05/2025 9:23 am

การใช้งานคำสั่ง scaffold ใน Odoo

โพสต์ที่ยังไม่ได้อ่าน โดย Bundith »

ในกระบวนการพัฒนาโมดูลสำหรับ Odoo ซึ่งเป็นระบบ ERP ที่ได้รับความนิยมอย่างสูงในองค์กรขนาดเล็กไปจนถึงขนาดใหญ่ "scaffold" ถือเป็นเครื่องมือสำคัญที่ช่วยให้นักพัฒนาสามารถเริ่มต้นสร้างโมดูลใหม่ได้อย่างรวดเร็ว เป็นระเบียบ และลดข้อผิดพลาดที่อาจเกิดจากการเขียนโค้ดด้วยตนเองทั้งหมด, Odoo scaffold คือคำสั่งที่ใช้ในการสร้างโครงสร้างพื้นฐานของโมดูล Odoo โดยอัตโนมัติ โดยจะสร้างไฟล์และโฟลเดอร์ที่จำเป็นต่อการพัฒนาโมดูลขึ้นมาให้พร้อมใช้ทันที เช่น ไฟล์ Python, XML, Manifest และโฟลเดอร์สำหรับเก็บข้อมูลต่าง ๆ ซึ่งช่วยลดเวลาในการเตรียมโครงสร้างและทำให้นักพัฒนาสามารถโฟกัสที่ฟังก์ชันหลักของโมดูลได้มากขึ้น, บทความนี้จะอธิบายการใช้งาน Odoo scaffold ตั้งแต่ขั้นตอนการติดตั้ง การรันคำสั่ง การปรับแต่งโครงสร้างที่ได้ และแนวทางการนำไปใช้ในโปรเจกต์จริง พร้อมตัวอย่างเพื่อความเข้าใจที่ชัดเจนมากยิ่งขึ้น
scaffold.png
scaffold.png (512.4 KiB) Viewed 175 times
1. ความหมายของ Odoo scaffold

คำว่า Scaffold มาจากแนวคิดในวงการพัฒนาซอฟต์แวร์ที่หมายถึง "นั่งร้าน" หรือโครงสร้างชั่วคราวที่ช่วยให้สามารถเริ่มพัฒนาได้อย่างรวดเร็ว ในกรณีของ Odoo scaffold คือคำสั่งที่ใช้สร้างโครงสร้างของโมดูลใหม่โดยไม่ต้องเขียนไฟล์ทุกอย่างด้วยตนเอง

เมื่อรันคำสั่ง odoo-bin scaffold <module_name> <destination_path> Odoo จะสร้างโฟลเดอร์ชื่อ <module_name> ซึ่งภายในจะมีไฟล์พื้นฐาน เช่น:
  • __manifest__.py – ใช้กำหนด metadata ของโมดูล
  • __init__.py – ไฟล์สำหรับ import module
  • models/ – โฟลเดอร์สำหรับเก็บ model (Python class)
  • views/ – โฟลเดอร์สำหรับไฟล์ XML ที่กำหนด UI
  • security/ – ใช้สำหรับเก็บ access control
2. การใช้งานคำสั่ง scaffold
ขั้นตอนที่ 1: เตรียมสภาพแวดล้อม
  • ติดตั้ง Odoo (เวอร์ชันที่ต้องการ)
  • เตรียม virtual environment
  • เข้าไปที่ root directory ของ Odoo
ขั้นตอนที่ 2: รันคำสั่ง scaffold

โค้ด: เลือกทั้งหมด

./odoo-bin scaffold my_module_name addons/
หรือหากใช้ Odoo ที่ติดตั้งผ่าน pip:

โค้ด: เลือกทั้งหมด

odoo scaffold my_module_name /path/to/custom/addons
ผลลัพธ์จะได้โครงสร้างดังนี้:

โค้ด: เลือกทั้งหมด

my_module_name/
├── __init__.py
├── __manifest__.py
├── controllers/
│   └── __init__.py
├── models/
│   ├── __init__.py
│   └── models.py
├── views/
│   └── my_module_name_template.xml
├── security/
│   └── ir.model.access.csv
└── static/
    └── description/
        └── icon.png
3. ประโยชน์ของการใช้ scaffold
  • ลดเวลาเตรียมไฟล์: ไม่ต้องสร้างโฟลเดอร์และไฟล์พื้นฐานเอง
  • มีมาตรฐาน: ได้โครงสร้างที่ตรงตามมาตรฐานของ Odoo
  • ช่วยลดข้อผิดพลาด: เพราะไฟล์เบื้องต้นถูกสร้างให้พร้อมใช้งาน
  • เหมาะสำหรับทีมงาน: ทุกคนจะใช้โครงสร้างเดียวกัน ทำให้เข้าใจตรงกัน
4. การปรับแต่ง scaffold เพื่อให้เหมาะกับงานจริง
หลังจาก scaffold โมดูลแล้ว นักพัฒนาควร:
  • เปลี่ยนชื่อไฟล์ XML และ model ให้ตรงกับฟังก์ชัน
  • แก้ไข __manifest__.py เพื่อกำหนดข้อมูลของโมดูล เช่น name, depends, data
  • เขียน model ใหม่ใน models/models.py และเพิ่ม field ตามที่ต้องการ
  • สร้าง view แบบ form/tree ในไฟล์ XML
  • เพิ่ม security rule ใน ir.model.access.csv
5. ตัวอย่างการนำ scaffold ไปพัฒนาโมดูลจริง
สมมุติว่าเราต้องการสร้างโมดูลชื่อ library_management สำหรับจัดการหนังสือ:
1. รัน:

โค้ด: เลือกทั้งหมด

./odoo-bin scaffold library_management addons/
2. แก้ไข models/models.py:

โค้ด: เลือกทั้งหมด

from odoo import models, fields

class Book(models.Model):
    _name = 'library.book'
    _description = 'Book'

    name = fields.Char(string='Title', required=True)
    author = fields.Char(string='Author')
    isbn = fields.Char(string='ISBN')
3. สร้าง views/book_views.xml:

โค้ด: เลือกทั้งหมด

<odoo>
  <record id="view_form_book" model="ir.ui.view">
    <field name="name">library.book.form</field>
    <field name="model">library.book</field>
    <field name="arch" type="xml">
      <form>
        <sheet>
          <group>
            <field name="name"/>
            <field name="author"/>
            <field name="isbn"/>
          </group>
        </sheet>
      </form>
    </field>
  </record>
</odoo>
4. แก้ไข __manifest__.py เพื่อเพิ่ม views และ security
5. เพิ่มสิทธิ์การเข้าถึงใน security/ir.model.access.csv

เมื่อครบขั้นตอนก็สามารถ install โมดูลนี้ใน Odoo ได้ทันที

6. คำแนะนำเพิ่มเติม
  • ใช้ scaffold เป็นจุดเริ่มต้น แต่ควรปรับปรุงต่อให้เหมาะสมกับโปรเจกต์
  • ตั้งชื่อโมดูลให้สื่อความหมาย เพื่อให้เข้าใจได้ง่าย
  • ควรใช้ Git version control ควบคู่กับ scaffold เพื่อจัดการเวอร์ชันโค้ด
  • หมั่นอ่านเอกสารของ Odoo เพื่อเข้าใจมาตรฐานที่เปลี่ยนไปในแต่ละเวอร์ชัน
บทสรุป
Odoo scaffold เป็นเครื่องมือพื้นฐานที่ช่วยให้นักพัฒนาสามารถเริ่มต้นสร้างโมดูลใหม่ได้อย่างรวดเร็วและเป็นระบบ เหมาะสำหรับทั้งมือใหม่และนักพัฒนาที่มีประสบการณ์ เพราะช่วยประหยัดเวลา ลดความผิดพลาด และสนับสนุนการทำงานแบบทีมได้อย่างมีประสิทธิภาพ, การเข้าใจวิธีการใช้งาน scaffold อย่างถูกต้อง จะช่วยให้การพัฒนาโมดูล Odoo เป็นเรื่องที่ง่ายและเป็นมืออาชีพมากยิ่งขึ้น โดยเฉพาะเมื่อมีการปรับแต่งและขยายต่อยอดโมดูลในโปรเจกต์จริง ทั้งนี้นักพัฒนาควรใช้ scaffold ควบคู่กับแนวทางปฏิบัติที่ดี เช่น การตั้งชื่อที่สื่อความหมาย การใช้ Git และการวางโครงสร้างโค้ดให้เป็นระเบียบ, สุดท้ายนี้ scaffold ไม่ใช่คำตอบทั้งหมดของการพัฒนาโมดูลใน Odoo แต่เป็นเครื่องมือเริ่มต้นที่ยอดเยี่ยมซึ่งจะพาคุณไปสู่การสร้างโมดูลคุณภาพได้เร็วและมั่นคงมากขึ้น

อ้างอิง
https://www.odoo.com/documentation/18.0/developer/reference/cli.html
https://www.cybrosys.com/odoo/odoo-books/odoo-15-development/ch3/scaffold-command/
https://www.packtpub.com/en-us/learning/how-to-tutorials/how-to-scaffold-a-new-module-in-odoo-11
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 2