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)
Let's extract all the students.
students = Student.objects.all()
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.
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'.
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.