Django Academy · Aula

OneToOneField para perfis

Amplie um modelo com um registro associado

Aula 3 de 413 etapas

OneToOneField para perfis é uma aula grátis de Django Academy no CoddyKit. Esta é a aula 3 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.

Exactly One Each Way

Sometimes a row pairs with exactly one other row, both ways. That is a one-to-one relationship, perfect for splitting data cleanly.

The Profile Pattern

The classic use is a user profile: each user gets one profile, and each profile belongs to one user. Extra fields live separately.

Declaring OneToOneField

Add a OneToOneField pointing at the other model. It behaves like a ForeignKey with a built-in uniqueness guarantee.

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

Unique Under the Hood

A OneToOneField is really a ForeignKey marked unique. That constraint stops two profiles from ever sharing one user.

on_delete Still Applies

Like any link, it needs on_delete. With CASCADE, deleting the user removes their profile too in one step.

user = models.OneToOneField(User, on_delete=models.CASCADE)

Why Not Just Add Fields?

You could pile fields onto the original model, but a separate profile keeps it tidy and avoids touching tables you do not own.

Forward Access

From the profile, read the linked user straight through the field. It returns the single connected object.

profile = Profile.objects.first()
print(profile.user.username)

Reverse Access

The reverse side is special: from a user you reach the profile with a lowercase model name, no _set suffix needed.

user = User.objects.first()
print(user.profile.bio)

Creating a Profile

Make a profile by passing the user it pairs with. The unique constraint blocks a second profile for that same user.

Profile.objects.create(user=user, bio="Hello!")

Auto-Creating with Signals

A common trick is a post_save signal that builds a profile the moment a user is created, so the pair always exists.

Querying Across the Pair

Filter through the link with the double underscore, reaching the profile's fields from the user side or vice versa.

User.objects.filter(profile__bio__icontains="django")

Quick Check

Each user must have at most one profile, and each profile one user. Which field models this?

Recap

Great job! A OneToOneField pairs two rows uniquely, and the reverse is reached by the model's lowercase name. 👤

Grátis para começar

Aprenda Python com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “OneToOneField para perfis” é grátis?

Sim — o texto completo de “OneToOneField para perfis” é 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 “OneToOneField para perfis”?

Amplie um modelo com um registro associado 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 3 de 4.

Quanto tempo leva a aula “OneToOneField para perfis”?

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. ForeignKey e on_delete
  2. ManyToManyField e modelos intermediários
  3. OneToOneField para perfis
  4. related_name e consultas reversas
← Voltar para Django Academy