Skip to main content

Django Case Insensitive Field is used to make Django Model Field case insensitive - by default Django can't do this.

Project description

Django Case Insensitive Model Field

pip install django_case_insensitive_field

With Django Case Insensitive Field you can make Django Model Field case insensitive - by default Django can't do this which will make it impossible to add a unique field that will be case insensitive regardeless of case.

Let's assume you have a username field on your UserModel which ofcourse would require username to be unique accross the table but to Django abc is different from ABC because it is case sensitive (meaning: users can use the same username but with different case).

Look at the example below:

from django.db import models

class UserModel(models.Model):

    username = models.CharField(max_length=16, unique=True)



user1 = UserModel(username='user1')

user1.save()  # will go through

user2 = UserModel(username='User1') # will still go through

user2.save()  # will go through

Using Django Case Insensitive Model

To make Django Model Field insensitive, you can use the code below:

No need for installation ot inclusion in app.

# fields.py

from django.db.models import CharField

from django_case_insensitive_field import CaseInsensitiveFieldMixin


class CaseInsensitiveCharField(CaseInsensitiveFieldMixin, CharField):
    """[summary]
    Makes django CharField case insensitive \n
    Extends both the `CaseInsensitiveMixin` and  CharField \n
    Then you can import 
    """

    def __init__(self, *args, **kwargs):

        super(CaseInsensitiveFieldMixin, self).__init__(*args, **kwargs) 
# models.py

from .fields import CaseInsensitiveCharField


class UserModel(models.Model):

    username = CaseInsensitiveCharField(max_length=16, unique=True)

user1 = UserModel(username='user1')

user1.save()  # will go through


user2 = UserModel(username='User1') 

user2.save() # will not go through

Note:

All values are converted to lowercase before insertion and extraction from database.

Compatibility

  1. Compatible with every database - POSTGRESQL, SQLITE, MYSQL etc.
  2. Compatible with Django 2+, 3+

Dependencies

Holla! No dependecy. Lightweight!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_case_insensitive_field-1.0.7.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file django_case_insensitive_field-1.0.7.tar.gz.

File metadata

File hashes

Hashes for django_case_insensitive_field-1.0.7.tar.gz
Algorithm Hash digest
SHA256 8e2502a932cf50a727abecc73a141edb75f740933ebbf5ae8745bcfadd9c3029
MD5 f8acb37273db1646c4710a5a2efd18cb
BLAKE2b-256 9618d77815f85a2ac0f0188a0a80da344e0e2d4eca4eadc73afface0f9320f1f

See more details on using hashes here.

File details

Details for the file django_case_insensitive_field-1.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for django_case_insensitive_field-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 9415a2ad80168e3f115a8edce0484fa6ee11a58eb3b8d41c282ea61abad80d93
MD5 21434fbbfaed8fa313440032ab3c0984
BLAKE2b-256 d08fdb3db9b65da0876af3f5fdb659d8d30ceb7eddde4740118c6ccd18c75b7c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page