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
Find me on Priyanshu Panwar | LinkedIn
Top comments (0)