Defina relações e chaves estrangeiras
Vincule modelos com associações de um para muitos.
Defina relações e chaves estrangeiras é uma aula grátis de Flask 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 Flask Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Flask Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Rows That Belong Together
Real data connects: a user has many posts, an order has many items. A relationship links these rows in your models. 🔗
The Foreign Key
A foreign key is a column on the child that stores the parent's id. It is the actual link saved in the database.
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))Point at the Right Table
Inside ForeignKey you name the target as table.column, using the lowercase table name Flask-SQLAlchemy generates.
db.ForeignKey("user.id")Add a relationship
The relationship() helper turns that key into easy navigation, so you reach linked objects as attributes.
posts = db.relationship("Post")One-to-Many in Practice
Put the foreign key on the many side and the relationship on the one side. One user, many posts.
class Post(db.Model):
user_id = db.Column(db.ForeignKey("user.id"))Navigate Parent to Children
Once linked, read a parent's children like a list. SQLAlchemy fetches them for you on access. ✨
user = User.query.first()
for p in user.posts:
print(p.title)Walk Back with backref
Add backref to a relationship and the child instantly gains a way to reach its parent.
posts = db.relationship("Post", backref="author")Use the Backref
That backref lets you go from a child straight back to its owner with a clean attribute. 🙌
post = Post.query.first()
print(post.author.name)Assign by Object
Link rows by setting the relationship attribute to an object. SQLAlchemy fills in the foreign key for you.
post = Post(title="Hi")
post.author = userCascade on Delete
Set a cascade so deleting a parent can also remove its children, keeping the database tidy and consistent.
db.relationship("Post", cascade="all, delete")Key vs Relationship
The foreign key stores the link in SQL; relationship is the Python convenience layer on top of it. You usually want both.
Quick Check
One user can write many posts. Where does the foreign key column live?
Recap: Linking Models
You now connect tables with a foreign key, navigate them via relationship and backref, and control deletes with cascade. Models, united! 🎉
Perguntas Frequentes
A aula “Defina relações e chaves estrangeiras” é grátis?
Sim — o texto completo de “Defina relações e chaves estrangeiras” é 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 Flask Academy, atualize para CoddyKit PRO. O curso de Flask Academy inclui 4 aulas no total.
O que vou aprender em “Defina relações e chaves estrangeiras”?
Vincule modelos com associações de um para muitos. Você pratica Flask 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 Flask Academy?
Nenhuma experiência prévia é necessária. Flask 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 “Defina relações e chaves estrangeiras”?
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 Flask Academy?
Sim. Cada aula de Flask 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
- Busque linhas com query e get
- Filtre, ordene e limite resultados
- Defina relações e chaves estrangeiras
- Junções e carregamento tardio versus antecipado