
Django ORM nâng cao
Raw SQL, custom managers, query expressions, database functions, atomic transactions, select_for_update, race conditions, database routers
1Sự khác biệt chính giữa Model.objects.raw() và connection.cursor() khi thực thi raw SQL trong Django là gì?
Sự khác biệt chính giữa Model.objects.raw() và connection.cursor() khi thực thi raw SQL trong Django là gì?
Câu trả lời
Model.objects.raw() trả về các instance model được ánh xạ tự động, giữ lại các lợi ích của ORM như truy cập thuộc tính và quan hệ. connection.cursor() trả về một cursor cơ sở dữ liệu thô với tuple, cung cấp sự linh hoạt hơn cho các truy vấn không gắn với một model cụ thể, nhưng yêu cầu xử lý kết quả thủ công.
2Lợi thế chính của việc tạo một custom Manager trong Django thay vì thêm phương thức trực tiếp vào model là gì?
Lợi thế chính của việc tạo một custom Manager trong Django thay vì thêm phương thức trực tiếp vào model là gì?
Câu trả lời
Một custom Manager đóng gói logic truy vấn ở cấp bảng, cho phép chuỗi phương thức với QuerySet và tái sử dụng logic này ở mọi nơi model được dùng. Các phương thức model hoạt động trên từng instance riêng lẻ. Manager cũng cho phép sửa đổi QuerySet mặc định bằng get_queryset().
3Làm thế nào để triển khai một custom QuerySet nhằm cho phép chuỗi các phương thức tùy chỉnh trong Django?
Làm thế nào để triển khai một custom QuerySet nhằm cho phép chuỗi các phương thức tùy chỉnh trong Django?
Câu trả lời
Để cho phép chuỗi, hãy tạo một lớp kế thừa từ QuerySet với các phương thức trả về self hoặc một QuerySet đã lọc. Sau đó dùng custom QuerySet thông qua Manager.from_queryset() hoặc định nghĩa một Manager tùy chỉnh với get_queryset() trả về custom QuerySet. Điều này cho phép gọi Model.objects.custom_method().filter().
Nên dùng biểu thức Django nào để tăng một bộ đếm trong cơ sở dữ liệu một cách nguyên tử mà không có nguy cơ race condition?
Chức năng của transaction.atomic() là gì và nó xử lý các exception trong Django như thế nào?
+25 câu hỏi phỏng vấn
Các chủ đề phỏng vấn Django khác
Kiến thức cơ bản về Python
Python hướng đối tượng
Kiến thức cơ bản về Django
Models Django - Cơ bản
Django Views
Template Django
Django Forms
QuerySets nâng cao
Xác thực Django
Middleware Django
Django Admin
Django REST Framework
Signal trong Django
Tải tệp lên
Caching trong Django
Session Django
Email trong Django
Kiểm thử Django
Bảo mật Django
Triển khai Django
Hiệu năng Django
Django & Celery
Django Channels
Django & GraphQL
Django & Docker
Django trong hệ sinh thái Microservices
Lệnh Django tùy chỉnh
Quốc tế hóa trong Django
Design Patterns trong Django
Django Async & ASGI
Settings & Cấu hình Production
Observability & Monitoring
Nắm vững Django cho lần phỏng vấn tiếp theo
Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.
Bắt đầu miễn phí