0Pricing
Django Academy · Lezione

Espressioni F per aggiornamenti atomici

Aggiornare le colonne usando in sicurezza i propri valori

Espressioni F per aggiornamenti atomici è una lezione Django Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Django Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Django Academy include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

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 F

Increment 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. 💾

Domande Frequenti

La lezione «Espressioni F per aggiornamenti atomici» è gratuita?

Sì — il testo completo di «Espressioni F per aggiornamenti atomici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Django Academy, passa a CoddyKit PRO. Il corso Django Academy include 4 lezioni in totale.

Cosa imparerò in «Espressioni F per aggiornamenti atomici»?

Aggiornare le colonne usando in sicurezza i propri valori Eserciti Django Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Django Academy?

Non è richiesta alcuna esperienza precedente. Django Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Espressioni F per aggiornamenti atomici»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Django Academy?

Sì. Ogni lezione Django Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. aggregate o annotate
  2. Espressioni F per aggiornamenti atomici
  3. Oggetti Q per filtri complessi
  4. Aggregazione condizionale con Case/When
← Torna a Django Academy