Django

Django ORM Lanjutan

Raw SQL, custom managers, query expressions, database functions, atomic transactions, select_for_update, race conditions, database routers

28 pertanyaan wawancara·
Senior
1

Apa perbedaan utama antara Model.objects.raw() dan connection.cursor() untuk menjalankan raw SQL di Django?

Jawaban

Model.objects.raw() mengembalikan instance model yang dipetakan secara otomatis, mempertahankan manfaat ORM seperti akses atribut dan relasi. connection.cursor() mengembalikan cursor database mentah dengan tuple, menawarkan fleksibilitas lebih untuk query yang tidak terikat pada model tertentu, tetapi memerlukan penanganan hasil secara manual.

2

Apa keuntungan utama membuat custom Manager di Django dibandingkan menambahkan metode langsung ke model?

Jawaban

Custom Manager mengenkapsulasi logika query tingkat tabel, memungkinkan chaining metode dengan QuerySet dan menggunakan kembali logika ini di mana pun model digunakan. Metode model beroperasi pada instance individual. Manager juga memungkinkan modifikasi QuerySet default dengan get_queryset().

3

Bagaimana cara mengimplementasikan custom QuerySet untuk memungkinkan chaining metode kustom di Django?

Jawaban

Untuk memungkinkan chaining, buat kelas yang mewarisi QuerySet dengan metode yang mengembalikan self atau QuerySet yang difilter. Kemudian gunakan custom QuerySet melalui Manager.from_queryset() atau definisikan Manager kustom dengan get_queryset() yang mengembalikan custom QuerySet. Ini memungkinkan pemanggilan Model.objects.custom_method().filter().

4

Ekspresi Django mana yang digunakan untuk menambah counter secara atomik di database tanpa risiko race condition?

5

Apa fungsi transaction.atomic() dan bagaimana ia menangani exception di Django?

+25 pertanyaan wawancara

Kuasai Django untuk wawancara berikutnya

Akses semua pertanyaan, flashcards, tes teknis, latihan code review dan simulator wawancara.

Mulai gratis