Django ORM
models.py - /path/projectdir/theapp -
Django ORM Docs
from django.db import models
class Students(models.Model):
id = models.BigAutoField(primary_key=True)
name = models.CharField(max_length=255)
email = models.CharField(unique=True, max_length=255)
gender = models.CharField(max_length=255)
admission_date = models.DateField()
age = models.IntegerField(default=0)
percent = models.FloatField()
class Meta:
managed = False
db_table = 'students'
def __str__(self):
return self.name
Create
def orm_create(request):
from .models import Students
s = Students(name="Daniel", email="daniel@gmail.com", gender="Male", admission_date="2025-02-01", age=25, percent=88.56)
s.save()
id = Students.objects.last().id
return HttpResponse('Created: '+str(id))
Read
def orm_read(request):
from .models import Students
from django.http import JsonResponse
students = Students.objects.all()
return JsonResponse({ 'json_students': list(students.values()) }, json_dumps_params={'indent': 4})
Read Filter Examples
def orm_read(request):
from .models import Students
import datetime
from django.http import JsonResponse
# scenario 1
students = Students.objects.filter(admission_date__year=2023)
# scenario 2
q1 = Students.objects.filter(name__startswith="A")
students = q1.exclude(admission_date__gte=datetime.date.today())
# scenario 3
q1 = Students.objects.filter(name__startswith="A")
q2 = q1.filter(age__gt=22)
q3 = q2.exclude(admission_date__gte=datetime.date.today())
q4 = q2.filter(percent__gte=60)
students = q4.exclude(admission_date__gte='2023-08-01')
return JsonResponse({ 'json_students': list(students.values()) }, json_dumps_params={'indent': 4})
Update
def orm_update(request):
from .models import Students
s = Students.objects.filter(id=107).update(name="Peter")
return HttpResponse('Updated!')
Delete
def orm_delete(request):
from .models import Students
s = Students.objects.filter(id=107).delete()
return HttpResponse('Deleted!')