This is the third blog of the series Everything About Django. In this article we are going to study about Models and Migrations.
- Models are the database tables.
- Django uses ORM (Object Relational Mapping) for models.
- Each model is a subclass inherited from
- Every attribute in Django Model specifies a field in the database table.
- ORM means Object Relational Mapper, one of the most powerful feature of Django.
- Django's ORM is just a pythonical way to create SQL to query and manipulate your database and get results in a pythonic fashion.
- How wonderful this is, you need not type SQL and do all the db stuff.
Let's take an example to see how a model is made.
from django.db import models class Student(models.Model): name = models.CharField(max_length=100) roll = models.IntegerField() address = models.CharField(max_length=200)
This way I have created a table Student with the following attributes : name - Char, roll - Integer, address - Char.
In SQL we do this by :
CREATE TABLE Student ( roll int, name varchar(100), address varchar(200) );
So you see how easy and pythonic this is with Django.
- Once we have defined a model, it's just a python code not yet reflected in our database, no table is created so far, until we migrate this to our database.
- Once our models is defined, we need to run
python manage.py makemigrations. See the example bro.
- Here core is the app in which my models is defined. It creates a folder in my app
- With every makemigrations, a file is created like
0001_initial.pywhich contains the information about our reflected changes in the database, which looks like this. This is a internal file created by django to reflect changes in the db.
- Once we have made migrations, we need to actually reflect them in the database to create and modify the table. For this run,
python manage.py migrate. This command will run the latest migrations made and reflect their changes.
I will create an article on tips while creating a model, where I will define all the attributes, functions one should define in a model.
Please feel free to comment for any help or topic I should write an article on.