Playing with Django Model Objects - CheatSheet

One must know how to play with Django models in their views in order to create efficient and short functions.

Let's take a model for example.

class Teacher(models.Model):
    name = models.CharField(max_length=100)

class Student(models.Model):
    name = models.CharField(max_length=100)
    roll = models.CharField(max_length=100)
    mentor = models.ForeignKey(Teacher, on_delete=models.CASCADE)
    reg_date = models.DateTimeField(auto_add_now=True)

Extracting all objects of a model

Let's extract all the students.

students = Student.objects.all()

Extracting a student by ID

ID is the primary key in every model.

from django.shortcuts import get_object_or_404

def my_view(request):
    obj = get_object_or_404(MyModel, pk=1)

Or there is another way to do this.

stud = Student.objects.get(pk=1)

The last one returns a error in case a student doesn't exist with the following id.

Filtering the objects

Simple filtering can be done with equating like

studs = Student.objects.filter(name='Ram Kapoor')

This will return the list of students whose name is Ram Kapoor.
We can also refer to the details of an attribute with the symbol __.

stud_2006 = Student.objects.filter(reg_date__year=2006)

This will return all the students registered in 2006.

stud_p = Student.objects.filter(name__startswith='P')

This will return all the students whose names start with 'P'.

Using Q() - Very Powerful

This is used to add many filters in a single filter using | (or), & (and).

stud = Student.objects.filter(Q(name__startswith='P') | Q(reg_date__year=2006))

This will return both the students whose names start with 'P' or who are registered in year 2006.

THANK YOU

24