บทความนี้ต่อจากครั้งก่อนครับ สามารถไปอ่านได้ที่นี่
หลังจากครั้งก่อนที่เราสร้าง Model ของเราเรียบร้อยแล้ว ครั้งนี้เราจะมาดูกันครับว่าเราจะสามารถทำอะไรกับมันได้บ้าง แล้วก็ทำยังไง แต่ก่อนอื่นขอให้เปิด Terminal หรือ Command Line ขึ้นมาก่อนครับ
เข้าไปใน Root Directory ของโปรเจค(ที่มีไฟล์ manage.py)
ก่อนที่เราจะใช้งาน Database ของเราได้จะจำเป็นต้องมีการ Migrate ก่อน ซึ่งก็คือการเขียนข้อมูล Database ลงไปเพื่อให้ระบบที่จะทำหน้าที่จัดการ Database จัดการ โดย Django ก็เลือก SQLite มาให้เราใช้เป็น default ครับ
ตอนที่เราเขียน Model เราก็แค่เขียนไฟล์ source code เฉยๆ แต่หากเราไม่ได้ Migrate ก่อน Django ก็จะไม่สามารถเอาสิ่งที่เราเขียนไปใช้งานได้ เราก็เลยต้อง Migrate กันก่อนครับ โดยวิธีทำก็ง่ายๆแค่พิมพ์คำสั่ง
python manage.py makemigrations
สำหรับบอกให้ Django ไปเช็คว่ามีอะไรที่ต้อง migrate บ้าง
python manage.py migrate
สำหรับ Migrate ไปที่ Database
จากภาพข้างบนคือภาพหลังจากรัน command ครับ ตรง makemigrations จะเห็นว่าของผมขึ้นว่า No changes detected เพราะผมรันไปก่อนแล้วครั้งนึงครับ
เมื่อ migrate เรียบร้อยเราก็จะสามารถใช้งาน databases ได้แล้ว มาลองดูกันครับว่าเราจะใช้มันยังไง
เพื่อให้เข้าใจมากขึ้นอาจจะเปิด excel ไปด้วยตอนทำตามนะครับ
ถ้าผมสร้างไฟล์ xls ขึ้นมาเพื่อที่จะให้เราพอนึกภาพ Model ออกจะได้ภาพประมาณนี้มีช่อง pk, title, date และ body
เราจะมาทดลองใช้ด้วย command line กันก่อนครับ จะได้ไม่ต้องไปรันเว็บหรือสร้าง url ให้ยุ่งยาก ใน command line พิมพ์คำสั่ง python manage.py shell
ทีนี้เราก็ import Model ที่เราสร้างจาก app blog
from blog.models import Blog
การจะสร้าง Object(django) หรือก็คือแต่ละแถวใน Model สามารถทำได้ง่ายๆ โดยสร้าง object(python) ขึ้นมารับ แล้วก็ใส่ attribute ที่มีใน Model นั้นๆ
แต่แค่สร้าง Object ขึ้นมาเปล่าๆเรายังไม่ได้เขียนอะไรลงใน database ครับ เราจำเป็นต้อง save ก่อน โดยสามารถใช้ Method save() ได้เลย
ทีนี้ Django ก็จะไปเขียน database ให้เราแล้วครับ
หลังจากเขียน database เราก็น่าจะหน้าตาประมาณนี้ ทีนี้ผมจะขอเขียนข้อมูลลงไปเยอะๆก่อนนะครับเพื่อที่จะได้ demo การ query database ได้
หลังจากเพิ่ม Database เราก็จะหน้าตาประมาณนี้
ถ้าเราอยากเห็น Object ทั้งหมดที่มีใน Blog ก็สามารถทำได้ด้วย
<Model>.objects.all()
Django จะคืนค่าออกมาเป็น QuerySet ซึ่งลักษณะคล้ายๆกับ List แต่จะมีฟีเจอร์สำหรับ Database หลายอย่าง เราสามารถเข้าถึงแต่ละ element ใน QuerySet ด้วยวิธีการเดียวกับใน List ครับ
การใช้ Filter ในการ List สามารถเอา .all() ออกแล้วใส่ .filter() แทนได้
หรือการจะเอาแค่ element แค่ element เดียวโดยไม่ต้องการคืนค่าเป็น QuerySet ก็สามารถทำได้ด้วย objects.get()
เราสามารถ Query ใน Django ได้อีกหลายแบบสามารถไปอ่านได้ที่ Documentation
Medium ที่ 23
ปีนี้ผมตั้งใจว่าจะเขียน Medium ให้ได้เดือนละ 4–5 Medium ครับ สิ้นปีก็จะมี 52 Medium เท่ากับจำนวนสัปดาห์ใน 1 ปีพอดี ไม่รู้จะทำได้มั้ย แต่ก็ถือเป็น Passion เล็กๆน้อยๆของผมครับ 5555
ผมเขียนบทความหลายแนวแล้วแต่ว่าอยากเขียนยังไง ถ้าอยากให้กำลังใจช่วยกด Clap ให้ซักที สองทีด้วยนะครับ :D
เจอกันบทความหน้าครับ