0Pricing
Django Academy · Lección

Expresiones F para actualizaciones atómicas

Actualice columnas de forma segura usando sus propios valores

Expresiones F para actualizaciones atómicas es una lección gratuita de Django Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Django Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Django Academy incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

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

Preguntas frecuentes

¿La lección «Expresiones F para actualizaciones atómicas» es gratis?

Sí — el texto completo de «Expresiones F para actualizaciones atómicas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Django Academy, actualiza a CoddyKit PRO. El curso de Django Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Expresiones F para actualizaciones atómicas»?

Actualice columnas de forma segura usando sus propios valores Practicas Django Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Django Academy?

No se requiere experiencia previa. Django Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Expresiones F para actualizaciones atómicas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Django Academy?

Sí. Cada lección de Django Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. aggregate frente a annotate
  2. Expresiones F para actualizaciones atómicas
  3. Objetos Q para filtros complejos
  4. Agregación condicional con Case/When
← Volver a Django Academy