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!')