JSON Field ช่วยให้จัดเก็บข้อมูลแบบยืดหยุ่นในรูปแบบ Key-Value ได้โดยไม่ต้องสร้างตารางเพิ่มเติม บทความนี้แนะนำการใช้ django-jsonfield สำหรับ Django เวอร์ชันเก่า (Django 3.1+ มี JSONField ในตัวแล้ว)
ขั้นตอนการใช้งาน
1. ติดตั้งแพ็กเกจ
pip install django-jsonfield
2. สร้าง Model ที่มี JSONField
import jsonfield
from django.db import models
class StudentData(models.Model):
name = models.CharField(max_length=100)
standard = models.CharField(max_length=100)
section = models.CharField(max_length=100)
the_json = jsonfield.JSONField()
3. ลงทะเบียนใน Admin
from django.contrib import admin
from .models import StudentData
admin.site.register(StudentData)
4. รัน Migration
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
การใช้งานใน Django Admin
เข้าไปที่ https://127.0.0.1/admin/ และเพิ่ม Instance ใหม่ จะเห็นช่อง JSON Field ที่รับข้อมูลในรูปแบบ JSON เช่น:
{
"subjects": ["Math", "Science", "English"],
"grades": {"Math": "A", "Science": "B+"},
"extracurricular": true
}
หมายเหตุสำคัญ
สำหรับ Django 3.1 ขึ้นไป ควรใช้ models.JSONField ที่มาพร้อมกับ Django Core แทน:
from django.db import models
class StudentData(models.Model):
name = models.CharField(max_length=100)
data = models.JSONField() # ใช้ตัวนี้แทน
JSONField ตัวนี้มีประสิทธิภาพดีกว่า รองรับ Query ได้ และไม่ต้องติดตั้งแพ็กเกจเพิ่มเติม