บทความนี้ต่อจากครั้งก่อนครับ สามารถไปอ่านได้ที่นี่


หลังจากครั้งก่อนที่เราสร้าง 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

จากภาพข้างบนคือภาพหลังจากรัน command ครับ ตรง makemigrations จะเห็นว่าของผมขึ้นว่า No changes detected เพราะผมรันไปก่อนแล้วครั้งนึงครับ

เมื่อ migrate เรียบร้อยเราก็จะสามารถใช้งาน databases ได้แล้ว มาลองดูกันครับว่าเราจะใช้มันยังไง

เพื่อให้เข้าใจมากขึ้นอาจจะเปิด excel ไปด้วยตอนทำตามนะครับ
Model ที่เราสร้างไว้

ถ้าผมสร้างไฟล์ xls ขึ้นมาเพื่อที่จะให้เราพอนึกภาพ Model ออกจะได้ภาพประมาณนี้มีช่อง pk, title, date และ body

เราจะมาทดลองใช้ด้วย command line กันก่อนครับ จะได้ไม่ต้องไปรันเว็บหรือสร้าง url ให้ยุ่งยาก ใน command line พิมพ์คำสั่ง python manage.py shell

Django shell

ทีนี้เราก็ import Model ที่เราสร้างจาก app blog

from blog.models import Blog

การจะสร้าง Object(django) หรือก็คือแต่ละแถวใน Model สามารถทำได้ง่ายๆ โดยสร้าง object(python) ขึ้นมารับ แล้วก็ใส่ attribute ที่มีใน Model นั้นๆ

สร้าง first_post ขึ้นมารับ object ของ Blog

แต่แค่สร้าง Object ขึ้นมาเปล่าๆเรายังไม่ได้เขียนอะไรลงใน database ครับ เราจำเป็นต้อง save ก่อน โดยสามารถใช้ Method save() ได้เลย

.save()

ทีนี้ Django ก็จะไปเขียน database ให้เราแล้วครับ

หลังจากเขียน database เราก็น่าจะหน้าตาประมาณนี้ ทีนี้ผมจะขอเขียนข้อมูลลงไปเยอะๆก่อนนะครับเพื่อที่จะได้ demo การ query database ได้

เพิ่ม Object ใน Blog

หลังจากเพิ่ม Database เราก็จะหน้าตาประมาณนี้

database

ถ้าเราอยากเห็น Object ทั้งหมดที่มีใน Blog ก็สามารถทำได้ด้วย

<Model>.objects.all()

.objects.all()

Django จะคืนค่าออกมาเป็น QuerySet ซึ่งลักษณะคล้ายๆกับ List แต่จะมีฟีเจอร์สำหรับ Database หลายอย่าง เราสามารถเข้าถึงแต่ละ element ใน QuerySet ด้วยวิธีการเดียวกับใน List ครับ

การเข้าถึงแต่ละ element สามารถใช้ index ได้เลย

การใช้ Filter ในการ List สามารถเอา .all() ออกแล้วใส่ .filter() แทนได้

แสดงแค่ที่มี title ว่า ‘this is first blog’

หรือการจะเอาแค่ element แค่ element เดียวโดยไม่ต้องการคืนค่าเป็น QuerySet ก็สามารถทำได้ด้วย objects.get()

ใช้ .get() จะคืนค่าตัวที่มีเงื่อนไขตามที่ระบุ

เราสามารถ Query ใน Django ได้อีกหลายแบบสามารถไปอ่านได้ที่ Documentation


Medium ที่ 23
ปีนี้ผมตั้งใจว่าจะเขียน Medium ให้ได้เดือนละ 4–5 Medium ครับ สิ้นปีก็จะมี 52 Medium เท่ากับจำนวนสัปดาห์ใน 1 ปีพอดี ไม่รู้จะทำได้มั้ย แต่ก็ถือเป็น Passion เล็กๆน้อยๆของผมครับ 5555
ผมเขียนบทความหลายแนวแล้วแต่ว่าอยากเขียนยังไง ถ้าอยากให้กำลังใจช่วยกด Clap ให้ซักที สองทีด้วยนะครับ :D
เจอกันบทความหน้าครับ