Web Framework ที่ชื่อ Django สามารถสร้าง CRUD ได้ง่ายดาย รวดเร็ว เพียงแต่สร้าง Model ให้ถูกต้อง Django จะจัดการสร้างหน้า Interface ให้อย่างสวยงาม แทบจะไม่ต้องเขียนคำสั่งใด ๆ เลย การปรับแต่งให้เป็นภาษาไทยก็ทำได้ดี
ในตอนที่ 6 จะขอนำเสนอการสร้างโมเดล หรือ database table ที่มีความสัมพันธ์กันบ้าง เพื่อให้เห็นว่า Django สามารถทำได้ดีทีเดียว
เมื่อย้อนกลับไปดู ตอนที่ 3 เพื่อดูรูป Schema ER-D ของ Northwind จะเห็นว่า Suppliers จะมีความสัมพันธ์กับ Products แบบ one to many และขณะเดียวกัน Categories ก็มีความสัมพันธ์กับ Products แบบ one to many เช่นเดียวกัน ดังนั้น การสร้างโมเดล จึงต้องสร้าง 1 class ต่อ 1 entity ซึ่งแต่ละ entity มีความสัมพันธ์กัน เราต้องสร้างฟิลด์ เพื่อบอกให้ Django ทราบความสัมพันธ์ด้วย
ขั้นตอนและวิธีการสร้าง มีดังนี้
-
เปิดไฟล์ models.py เดิม มาเพิ่มคำสั่งสร้างคลาสขึ้นอีกจำนวน 2 คลาสโดยพิมพ์ต่อท้ายบรรทัดล่างสุด และการจัดตำแหน่งให้อยู่คอลัมน์หน้าสุด ระดับเดียวกับ class Suppliers ดังนี้
|
|
ขอให้พิจารณา สังเกตคำสั่งที่มีสีแดงนะครับ นั่นคือ ฟิลด์ที่บอกความสัมพันธ์ระหว่าง entity การตั้งชื่อฟิลด์จะเหมือนหรือต่างก็ได้
นอกจากนี้ขอให้สังเกต primary key ของทั้ง 2 class นะครับว่ามีความแตกต่างกัน
class Categories จะไม่เห็นมี primary key ทั้งนี้เพราะว่า Django บอกว่า ถ้า primary key entity ใด ๆ ที่เป็น auto number หรือ auto increment ถ้าเราไม่ระบุไว้ในการกำหนดชื่อฟิลด์เอาไว้ Django จะสร้างให้เองอย่างอัตโนมัติ ชื่อว่า id
แต่ในทางกลับกันกับ class Products ถ้าเราต้องการให้รหัสสินค้าเป็น primary key ที่ต้องอ่านจากเครื่องอ่าน barcode ผู้ใช้จึงต้องป้อนข้อมูลรหัสสินค้าด้วยตนเอง ดังนั้น การกำหนดให้เป็น primary key จึงต้องเพิ่มคำว่า primary_key = True
ต่อไปเป็นการสั่งให้ Django สร้าง Database table และสร้างฟอร์ม ด้วยการใช้คำสั่ง syncdb ดังนี้
c:\repository\django\bin\bmis>manage.py syncdb
ต่อจากนั้นทดลองสั่งให้ Server ทำงาน ยังจำกันได้ไหมครับ ใช้บ่อย ๆ นั่นคือ
c:\repository\django\bin\bmis>manage.py runserver
เปิด Browser และไปที่ localhost:8000/admin/
เข้าสู่ระบบให้ได้ จะเห็นว่าไม่มีอะไรเกิดขึ้น อย่าเพิ่งตกใจ เพราะเรายังไม่ได้ register ให้กับ admin.py ดังนั้น จงเข้าใจเสียเลยว่า ถ้าเราต้องการให้ class ใด ๆ ให้ admin ใช้ได้ จะต้อง register ในไฟล์ admin.py เสียก่อน
เริ่มด้วยการเปิดไฟล์ admin.py แล้วเพิ่มคำสั่ง 2 บรรทัดต่อไปนี้เข้าไปต่อท้ายบรรทัดล่างสุด ดังนี้
admin.site.register(Products)
admin.site.register(Categories)
ถัดจากนั้นไปที่ Browser แล้ว refresh หรือ F5
หน้าจอที่ได้จะเป็นดังภาพด้านล่าง

เมื่อทดลองป้อนข้อมูลทั้ง ข้อมูลประเภทสินค้า และผู้จัดจำหน่ายเข้าไปประมาณ 3-5 รายการ แล้วมาป้อนข้อมูลสินค้า หน้าตาของฟอร์มจะเป็นดังภาพ ด้านล่าง ต่อไปนี้
