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)