how to make django model field case insensitive

Use Case: Making Django Model Field Case Insensitive

Step 1: Import necessary modules

from django.db import models
from django.db.models.functions import Lower

Step 2: Define the model with a custom manager

class CaseInsensitiveManager(models.Manager):
    def get_queryset(self):
        return super().get_queryset().annotate(lower_name=Lower('name'))

class YourModel(models.Model):
    name = models.CharField(max_length=100)
    objects = CaseInsensitiveManager()

Step 3: Use the custom manager for case-insensitive lookups

# Case-insensitive lookup
YourModel.objects.filter(name__iexact='your_name')

By following these steps, you can make a Django model field case insensitive. This approach involves creating a custom manager and using the annotate function to store a lowercased version of the field, allowing for case-insensitive lookups.