Определение связей и внешних ключей
Связывайте модели отношениями «один ко многим».
«Определение связей и внешних ключей» — бесплатный урок Flask Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Flask Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Flask Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
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! 🎉
Изучай Python с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Определение связей и внешних ключей» бесплатный?
Да — полный текст урока «Определение связей и внешних ключей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Flask Academy, подпишись на CoddyKit PRO. Курс Flask Academy содержит 4 уроков всего.
Чему я научусь в уроке «Определение связей и внешних ключей»?
Связывайте модели отношениями «один ко многим». Ты практикуешь Flask Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Flask Academy?
Предыдущий опыт не требуется. Flask Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Определение связей и внешних ключей»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Flask Academy?
Да. Каждый урок Flask Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Получение строк с помощью query и get
- Фильтрация, сортировка и ограничение результатов
- Определение связей и внешних ключей
- Объединения и ленивая или жадная загрузка