from django.db import models
class Student(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
email = models.EmailField()
โค้ดด้านบนจะสร้างตารางชื่อ student
ในฐานข้อมูล พร้อม field name, age และ email
CharField
– ข้อความสั้นTextField
– ข้อความยาวIntegerField
– ตัวเลขจำนวนเต็มFloatField
– เลขทศนิยมDateField
– วันที่BooleanField
– จริง/เท็จEmailField
– อีเมลForeignKey
– ความสัมพันธ์กับ model อื่น.filter()
, .exclude()
, .get()
# ดึงทั้งหมด
Student.objects.all()
# ดึงเฉพาะคนที่อายุเกิน 18
Student.objects.filter(age__gt=18)
# ดึงคนที่ชื่อคือ “John”
Student.objects.get(name="John")
# ดึงเฉพาะคนที่ไม่ใช่ John
Student.objects.exclude(name="John")
ใช้ filter
สำหรับหลายผลลัพธ์ และ get
สำหรับผลลัพธ์เดียว
exact
: ตรงกันพอดี → name__exact="John"
contains
: มีข้อความ → name__contains="oh"
gte
: มากกว่าหรือเท่ากับ → age__gte=20
lte
: น้อยกว่าหรือเท่ากับ → age__lte=25
in
: อยู่ในรายการ → age__in=[18,19,20]
startswith
: ขึ้นต้นด้วย → name__startswith="A"
.all()
– ดึงข้อมูลทั้งหมด.filter(เงื่อนไข)
– ดึงข้อมูลที่ตรงกับเงื่อนไข.get(เงื่อนไข)
– ดึงเพียง 1 เรคคอร์ดที่ตรงกับเงื่อนไข (ต้องมีแค่หนึ่ง ไม่งั้น error).exclude(เงื่อนไข)
– ดึงข้อมูลที่ไม่ตรงกับเงื่อนไข.order_by('field')
– เรียงลำดับผลลัพธ์.count()
– นับจำนวนแถว
# ดึงข้อมูลนักเรียนทั้งหมด
Student.objects.all()
# ดึงนักเรียนที่อายุ 18 ปี
Student.objects.filter(age=18)
# ดึงนักเรียนชื่อ "สมชาย"
Student.objects.get(name="สมชาย")
# ดึงนักเรียนที่ไม่ใช่อายุ 20 ปี
Student.objects.exclude(age=20)
# เรียงลำดับตามชื่อ (จาก ก → ฮ)
Student.objects.order_by("name")
# สร้างและบันทึกข้อมูลใหม่
student = Student(name="สมศรี", age=17)
student.save()
# หรือใช้ create()
Student.objects.create(name="สมศรี", age=17)
# แก้ไขข้อมูลของนักเรียน
student = Student.objects.get(id=1)
student.age = 18
student.save()
# ลบข้อมูลนักเรียน
student = Student.objects.get(id=1)
student.delete()
python manage.py shell
Student.objects.all()
เพื่อดึงข้อมูลทั้งหมด{% for student in students %}
{{ student.name }}
urls.py
ให้ชี้มาที่ view นั้น
Book(title, author, year)
ใน models.py
makemigrations
และ migrate
เพื่อสร้างตาราง
Book.objects.all()
/books/<id>/
สำหรับดูรายละเอียดแต่ละเล่ม
DetailView
) เพื่อดึง Book
ตาม ID
book_detail.html
ที่แสดง title, author, year