Models and Migrations
In the previous chapter, we had a brief introduction to Django and its use in developing web applications. Then, we learned about the Model-View-Template (MVT) concept. Later, we created a Django project and started the Django development server. We also briefly discussed Django’s views, URLs, and templates.
In this chapter, you will be introduced to the concept of databases, the types of databases, and their importance in building web applications. You will start by creating a database using an open source database visualization tool called SQLite DB Browser. You will then perform some basic create, read, update, and delete (CRUD) database operations using SQL commands. Then, you will learn about Django’s object-relational mapping (ORM), through which your application can interact and seamlessly work with a relational database using simple Python code, eliminating the need to run complex SQL queries. You will learn about models and migrations, which are part of Django’s ORM, used to propagate database schematic changes from the application to the database, and also perform database CRUD operations. Toward the end of the chapter, you will study the various types of database relationships and use that knowledge to perform queries across related records.
We will cover the following topics in this chapter:
- Understanding and using databases
- Understanding CRUD operations using SQL
- Exploring Django ORM
- Creating Django models and migrations
- Django’s database CRUD operations
- Bulk create and bulk update operations
- Performing complex lookups using
Q
objects - Activity 2.01 – create models for a project management application
- Populating the Bookr project’s database
By the end of this chapter, you will have a good understanding of databases and how Django can be used to implement database operations for a web application.