Ekspresi F untuk Pembaruan Atomik
Perbarui kolom dengan aman menggunakan nilainya sendiri
Ekspresi F untuk Pembaruan Atomik adalah pelajaran Django Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Django Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Django Academy mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
The Read-Modify-Write Trap
Loading a value, changing it in Python, then saving creates a race: two requests can read the same number and overwrite each other.
Enter F Expressions
An F expression refers to a column by name, letting the database do the math itself instead of round-tripping the value to Python.
from django.db.models import FIncrement in the Database
Use F to add to a column based on its own current value, computed safely inside a single SQL statement.
Product.objects.filter(id=1).update(stock=F("stock") - 1)Why This Is Atomic
The whole change runs as one UPDATE, so concurrent requests stack correctly instead of clobbering one another's results.
Update Many Rows at Once
Because F runs in SQL, you can apply a change across a whole queryset in one query, like giving every product a raise.
Product.objects.update(price=F("price") * 1.1)Compare Two Columns
F expressions also shine in filters, letting you compare one column against another directly in the query.
Order.objects.filter(shipped__gt=F("ordered"))Refresh After update()
An in-memory instance does not change when you run update, so call refresh_from_db to pull the new value back.
p.refresh_from_db()F on a Single Instance
You can also assign an F expression to a field and then save; Django turns it into the same column-aware SQL.
p.stock = F("stock") - 1
p.save()Arithmetic Across Fields
F values support full arithmetic, so you can combine columns, for example storing a total computed from price and quantity.
Line.objects.update(total=F("price") * F("qty"))A Common Gotcha
After saving with an F expression, the Python attribute still holds the expression object, not the number, until you refresh.
When to Reach for F
Pick F whenever an update depends on a column's current value, especially counters, balances, and stock that many requests touch.
Quick Check
Two checkouts hit the same product at once. Which approach avoids losing a decrement?
Recap
F expressions push math into the database for atomic, race-free updates across one or many rows. Just refresh your instance afterward. 💾
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Ekspresi F untuk Pembaruan Atomik” gratis?
Ya — teks lengkap “Ekspresi F untuk Pembaruan Atomik” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Django Academy, upgrade ke CoddyKit PRO. Kursus Django Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Ekspresi F untuk Pembaruan Atomik”?
Perbarui kolom dengan aman menggunakan nilainya sendiri Kamu berlatih Django Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Django Academy?
Tidak diperlukan pengalaman sebelumnya. Django Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Ekspresi F untuk Pembaruan Atomik” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Django Academy ini?
Ya. Setiap pelajaran Django Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- aggregate vs annotate
- Ekspresi F untuk Pembaruan Atomik
- Objek Q untuk Filter Kompleks
- Agregasi Kondisional dengan Case/When