Django Academy · บทเรียน

อินไลน์และฟิลด์อ่านอย่างเดียว

แก้ไขแถวข้อมูลที่เกี่ยวข้องแบบอินไลน์และป้องกันการแก้ฟิลด์

บทเรียน 4 จาก 413 ขั้นตอน

อินไลน์และฟิลด์อ่านอย่างเดียว เป็นบทเรียน Django Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Django Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Django Academy มีบทเรียนทั้งหมด 4 บทเรียน

แก้ไขแถวที่เกี่ยวข้องพร้อมกัน

บางครั้งระเบียนที่เกี่ยวข้องควรอยู่ในหน้าเดียวกัน ฟอร์มแทรกช่วยให้คุณแก้ไขแถวลูกได้โดยตรงภายในแบบฟอร์มแก้ไขของแถวแม่ 🧩

รูปแบบฟอร์มแทรกสองแบบ

Django มีเค้าโครงให้เลือกสองแบบ TabularInline แสดงแถวในตารางขนาดกะทัดรัด ส่วน StackedInline จะวางแต่ละแถวเป็นบล็อกของตัวเอง

กำหนดฟอร์มแทรก

สร้างคลาสขนาดเล็กที่สืบทอดจาก TabularInline และกำหนดแอตทริบิวต์ model ให้ชี้ไปยังโมเดลลูกที่ต้องการฝัง

class CommentInline(admin.TabularInline):
    model = Comment

เชื่อมต่อกับแถวแม่

ใส่ฟอร์มแทรกไว้ในส่วนดูแลระบบของแถวแม่ ตัวเลือก inlines จะบอก Django ให้แสดงแถวลูกเหล่านั้นภายในแบบฟอร์มของแถวแม่

class PostAdmin(admin.ModelAdmin):
    inlines = [CommentInline]

แถวว่างสำรอง

ฟอร์มแทรกจะแสดงแถวว่างสำหรับเพิ่มข้อมูลอย่างรวดเร็ว กำหนด extra เพื่อควบคุมจำนวนช่องว่างที่แสดง โดยทั่วไปมีเพียงหนึ่งช่องก็เพียงพอ

extra = 1

ข้อกำหนดของ FK

ฟอร์มแทรกจะทำงานได้ก็ต่อเมื่อโมเดลลูกมี ForeignKey ไปยังโมเดลแม่ ลิงก์นี้ทำให้ Django ทราบว่าแถวใดเป็นของกลุ่มเดียวกัน

ป้องกันการแก้ไขฟิลด์

ค่าบางอย่างควรแสดงให้เห็นแต่ไม่ควรแก้ไขด้วยตนเอง เพิ่มค่าดังกล่าวลงใน readonly_fields แล้วส่วนดูแลระบบจะแสดงค่าเหล่านั้นเป็นแบบล็อกไว้ 🔒

readonly_fields = ("created", "updated")

ประทับเวลาอัตโนมัติ

ฟิลด์อย่างวันที่ที่ใช้ auto_now_add ถูกกำหนดโดย Django ไม่ใช่ผู้ใช้ การกำหนดให้เป็น readonly ช่วยป้องกันการแก้ไขที่ทำให้สับสนและบันทึกไม่ได้

แสดงค่าที่คำนวณ

readonly_fields ยังระบุเมธอดได้ด้วย ทำให้คุณแสดงค่าที่คำนวณขึ้นและไม่มีคอลัมน์จริงในฐานข้อมูลได้

def word_count(self, obj):
    return len(obj.body.split())

ฟิลด์อ่านอย่างเดียวในฟอร์มแทรก

ฟอร์มแทรกก็รองรับ readonly_fields เช่นกัน ใช้เพื่อแสดงข้อมูลของแถวลูกอย่างชัดเจน พร้อมป้องกันไม่ให้แก้ไขคอลัมน์ที่มีข้อมูลสำคัญ

สิทธิ์ยังคงมีผล

โหมดอ่านอย่างเดียวเกี่ยวข้องกับแบบฟอร์ม ไม่ใช่ความปลอดภัย การเข้าถึงจริงถูกควบคุมโดยสิทธิ์ของผู้ใช้ ดังนั้นควรใช้ทั้งสองอย่างร่วมกันเพื่อการแก้ไขที่ปลอดภัย

ตรวจสอบอย่างรวดเร็ว

โมเดลต้องมีอะไรจึงจะปรากฏเป็นฟอร์มแทรกได้

ทบทวน

คุณฝังแถวที่เกี่ยวข้องด้วย inlines และล็อกค่าที่มีข้อมูลสำคัญด้วย readonly_fields ทั้งสองอย่างร่วมกันทำให้การแก้ไขในส่วนดูแลระบบมีความสามารถหลากหลายและปลอดภัย ✅

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “อินไลน์และฟิลด์อ่านอย่างเดียว” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “อินไลน์และฟิลด์อ่านอย่างเดียว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Django Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Django Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “อินไลน์และฟิลด์อ่านอย่างเดียว”

แก้ไขแถวข้อมูลที่เกี่ยวข้องแบบอินไลน์และป้องกันการแก้ฟิลด์ คุณปฏิบัติ Django Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Django Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Django Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “อินไลน์และฟิลด์อ่านอย่างเดียว” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Django Academy นี้ได้ไหม

ได้ บทเรียน Django Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. createsuperuser และการเข้าสู่ระบบ
  2. ลงทะเบียนโมเดลด้วย admin.site
  3. ปรับแต่ง ModelAdmin
  4. อินไลน์และฟิลด์อ่านอย่างเดียว
← กลับไปที่ Django Academy