Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การเพิ่ม JSON Field ใน Django Models

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 ได้ และไม่ต้องติดตั้งแพ็กเกจเพิ่มเติม