0Pricing
Django Academy · Aula

Expressões F para atualizações atômicas

Atualize colunas usando seus próprios valores com segurança

Expressões F para atualizações atômicas é uma aula grátis de Django Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Django Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Django Academy inclui 4 aulas no total.

Partes desta aula ainda não foram traduzidas e aparecem em 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. 💾

Perguntas Frequentes

A aula “Expressões F para atualizações atômicas” é grátis?

Sim — o texto completo de “Expressões F para atualizações atômicas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Django Academy, atualize para CoddyKit PRO. O curso de Django Academy inclui 4 aulas no total.

O que vou aprender em “Expressões F para atualizações atômicas”?

Atualize colunas usando seus próprios valores com segurança Você pratica Django Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Django Academy?

Nenhuma experiência prévia é necessária. Django Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Expressões F para atualizações atômicas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Django Academy?

Sim. Cada aula de Django Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. aggregate versus annotate
  2. Expressões F para atualizações atômicas
  3. Objetos Q para filtros complexos
  4. Agregação condicional com Case/When
← Voltar para Django Academy