
Django ORM ขั้นสูง
Raw SQL, custom managers, query expressions, database functions, atomic transactions, select_for_update, race conditions, database routers
1ความแตกต่างหลักระหว่าง Model.objects.raw() และ connection.cursor() ในการรัน raw SQL ใน Django คืออะไร?
ความแตกต่างหลักระหว่าง Model.objects.raw() และ connection.cursor() ในการรัน raw SQL ใน Django คืออะไร?
คำตอบ
Model.objects.raw() คืนค่าเป็น instance ของ model ที่ถูก map โดยอัตโนมัติ ทำให้ยังคงข้อดีของ ORM เช่นการเข้าถึงแอตทริบิวต์และความสัมพันธ์ ส่วน connection.cursor() คืนค่าเป็น cursor ฐานข้อมูลแบบดิบที่มี tuple ให้ความยืดหยุ่นมากขึ้นสำหรับ query ที่ไม่ผูกกับ model เฉพาะ แต่ต้องจัดการผลลัพธ์เอง
2ข้อได้เปรียบหลักของการสร้าง custom Manager ใน Django แทนที่จะเพิ่มเมธอดลงในโมเดลโดยตรงคืออะไร?
ข้อได้เปรียบหลักของการสร้าง custom Manager ใน Django แทนที่จะเพิ่มเมธอดลงในโมเดลโดยตรงคืออะไร?
คำตอบ
custom Manager ห่อหุ้มลอจิกการ query ระดับตาราง ทำให้สามารถเชื่อมต่อเมธอดกับ QuerySet และนำลอจิกนี้ไปใช้ซ้ำได้ทุกที่ที่ใช้โมเดล เมธอดของโมเดลทำงานกับ instance แต่ละตัว Manager ยังอนุญาตให้แก้ไข QuerySet เริ่มต้นด้วย get_queryset() ได้ด้วย
3จะ implement custom QuerySet เพื่อให้สามารถเชื่อมต่อเมธอดที่กำหนดเองใน Django ได้อย่างไร?
จะ implement custom QuerySet เพื่อให้สามารถเชื่อมต่อเมธอดที่กำหนดเองใน Django ได้อย่างไร?
คำตอบ
เพื่อให้สามารถเชื่อมต่อได้ ต้องสร้างคลาสที่สืบทอดจาก QuerySet โดยมีเมธอดที่คืนค่า self หรือ QuerySet ที่ถูกกรอง จากนั้นใช้ custom QuerySet ผ่าน Manager.from_queryset() หรือกำหนด Manager ที่กำหนดเองด้วย get_queryset() ที่คืนค่า custom QuerySet ซึ่งทำให้เรียก Model.objects.custom_method().filter() ได้
ควรใช้ expression ของ Django ใดในการเพิ่มค่าตัวนับในฐานข้อมูลแบบ atomic โดยไม่มีความเสี่ยงของ race condition?
หน้าที่ของ transaction.atomic() คืออะไร และมันจัดการกับ exception ใน Django อย่างไร?
+25 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Django อื่นๆ
พื้นฐาน Python
Python เชิงวัตถุ
พื้นฐาน Django
Django Models - พื้นฐาน
Django Views
เทมเพลต Django
ฟอร์ม Django
QuerySets ขั้นสูง
การยืนยันตัวตนใน Django
Django Middleware
Django Admin
Django REST Framework
Django Signals
การอัปโหลดไฟล์
การแคชใน Django
Django Sessions
อีเมลใน Django
การทดสอบ Django
ความปลอดภัยของ Django
การ Deploy Django
ประสิทธิภาพของ Django
Django & Celery
Django Channels
Django & GraphQL
Django & Docker
Django ในระบบนิเวศ Microservices
คำสั่ง Django แบบกำหนดเอง
การทำให้รองรับหลายภาษาใน Django
Design Patterns ใน Django
Django Async และ ASGI
Settings และการตั้งค่า Production
Observability และ Monitoring
เชี่ยวชาญ Django สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี