Skip to content

Commit 87b7e53

Browse files
committed
Django Migrations
1 parent a503300 commit 87b7e53

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
---
2+
title : How to manage the DataBase Migrations in Django
3+
sidebar_label : Migrations
4+
---
5+
6+
# DataBase Migrations in Django
7+
8+
<SubHeading>Learn how to mmigrate the Databases in Django.</SubHeading>
9+
10+
**Managing database migrations** is a crucial part of [Django](https://www.djangoproject.com/) development.
11+
Migrations allow you to evolve your database schema over time as your application's data model changes.
12+
13+
![Learn how to mmigrate the Databases in Django - Tutorial provided by AppSeed.](https://user-images.githubusercontent.com/51070104/268675023-54ea4ace-a8ad-442b-9b43-2ba12a6403ba.jpg)
14+
15+
> Here's a **step-by-step guide on how to manage database migrations in Django**:
16+
17+
## **Creating a New Migration**
18+
19+
When you make changes to your models (add, modify, or delete fields), you need to create a migration to update the database schema.
20+
21+
```bash
22+
python manage.py makemigrations
23+
```
24+
25+
This command examines your models and creates migration files in your app's `migrations` directory. These files contain the changes necessary to bring the database schema in sync with your models.
26+
27+
## **Review the Migration Files**
28+
29+
Open the generated migration files (located in your app's `migrations` directory) to review the proposed changes.
30+
31+
It's important to understand what the migration will do before applying it.
32+
33+
## **Applying Migrations**
34+
35+
To apply pending migrations and update the database schema, use the `migrate` command:
36+
37+
```bash
38+
python manage.py migrate
39+
```
40+
41+
This command will execute all pending migrations in the order they were created. Your database will now match your models.
42+
43+
## **Applying a Specific Migration**
44+
45+
If you want to apply a specific migration, you can provide its name or number as an argument:
46+
47+
```bash
48+
python manage.py migrate your_app_name migration_name
49+
```
50+
51+
## **Checking Migration Status**
52+
53+
To check the status of migrations (which have been applied or not), you can use the following command:
54+
55+
```bash
56+
python manage.py showmigrations
57+
```
58+
59+
It will list all available migrations and indicate which ones have been applied.
60+
61+
## **Reverting Migrations**
62+
63+
If you need to reverse a migration, use the `migrate` command with the `--fake` option followed by the migration you want to revert:
64+
65+
```bash
66+
python manage.py migrate your_app_name migration_name
67+
```
68+
69+
## **Creating Initial Migrations**
70+
71+
When you first create your Django project, you need to generate an initial migration to create the database schema based on your models:
72+
73+
```bash
74+
python manage.py makemigrations
75+
python manage.py migrate
76+
```
77+
78+
This sets up the initial state of the database schema.
79+
80+
## **Dependencies Between Migrations**
81+
82+
If you have migrations that depend on others, Django will handle them in the correct order by default. It's part of the migration framework to manage dependencies automatically.
83+
84+
## **Schema Changes in Production**
85+
86+
When dealing with a production database, be cautious. Make sure to back up your data before applying migrations, especially when making changes that could lead to data loss.
87+
88+
## **Manual Schema Changes**
89+
90+
In some cases, you may need to make manual schema changes (e.g., creating indexes or triggers). You can do this in a database-specific manner, but it's a good practice to document these changes in your project.
91+
92+
## ✅ In Summary
93+
94+
Managing database migrations is an essential aspect of maintaining a **Django** project. It allows you to keep your database schema in sync with your application's data model as it evolves over time.
95+
96+
## ✅ Resources
97+
98+
- 👉 Access [AppSeed](https://appseed.us/) for more starters and support
99+
- 👉 [Deploy Projects on Aws, Azure and DO](https://www.docs.deploypro.dev/) via **DeployPRO**
100+
- 👉 Create landing pages with [Simpllo, an open-source site builder](https://www.simpllo.com/)
101+
- 👉 Build apps with [Django App Generator](https://app-generator.dev/django/) (free service)

0 commit comments

Comments
 (0)