DEV Community

Ajit
Ajit

Posted on

Django's Object-Relational Mapping (ORM)

Django's Object-Relational Mapping (ORM) is a powerful feature that simplifies database interactions in Django applications. It allows developers to work with databases using Python classes and objects rather than writing SQL queries directly. Here's a complete overview of Django's ORM:

1. Model Definition:

The foundation of the Django ORM is the definition of data models. Models are Python classes that represent database tables. Each model class maps to a table, and its attributes define the table's columns.

from django.db import models class MyModel(models.Model): name = models.CharField(max_length=100) age = models.IntegerField() 
Enter fullscreen mode Exit fullscreen mode

2. Fields:

Django provides various field types (e.g., CharField, IntegerField, DateField) that correspond to SQL data types. You can use these fields to define the structure of your database tables.

3. Model Relationships:

Models can define relationships with other models. The most common types of relationships are:

ForeignKey: Represents a one-to-many relationship.
OneToOneField: Represents a one-to-one relationship.
ManyToManyField: Represents a many-to-many relationship.

class Author(models.Model): name = models.CharField(max_length=100) class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Author, on_delete=models.CASCADE) 
Enter fullscreen mode Exit fullscreen mode

4.Database Table Creation:

Django automatically generates database tables based on your model
definitions. You can create these tables by running migrations:

python manage.py makemigrations python manage.py migrate 
Enter fullscreen mode Exit fullscreen mode

5.Querying the Database:

Django's ORM provides a QuerySet API for querying the database. You can filter, order, and aggregate data using a Pythonic syntax.

# Create a new object new_obj = MyModel(name='John', age=25) new_obj.save() # Retrieve an object obj = MyModel.objects.get(id=1) # Update an object obj.age = 26 obj.save() # Delete an object obj.delete() 
Enter fullscreen mode Exit fullscreen mode

6. CRUD Operations:

You can easily create, retrieve, update, and delete records using the model's methods:

# Create a new object new_obj = MyModel(name='John', age=25) new_obj.save() # Retrieve an object obj = MyModel.objects.get(id=1) # Update an object obj.age = 26 obj.save() # Delete an object obj.delete() 
Enter fullscreen mode Exit fullscreen mode

Django's ORM offers advanced features like migrations, database indexes, database routing, database migrations, and more to handle complex scenarios in real-world applications.

In summary, Django's ORM simplifies database interactions in Django applications by allowing you to define models, perform database operations, and write queries using Python code, making it easier to build robust and maintainable web applications

Top comments (0)