A django model abstract class for creating random int primary keys.
Project description
Django Random ID Model
This module provides a base class for Django models that gives them a random primary key id.
For example, this is the vanilla way to do primary keys:
from django.db import models
class Customer(models.Model):
name = models.CharField(max_length=50)
customer1 = Customer.objects.create(name="John")
customer2 = Customer.objects.create(name="Jane")
print(customer1.id) # '1'
print(customer2.id) # '2'
The primary key just auto increments.
Now use RandomIDModel
:
from django.db import models
from django_random_id_model import RandomIDModel
class Customer(RandomIDModel):
name = models.CharField(max_length=50)
customer1 = Customer.objects.create(name="John")
customer2 = Customer.objects.create(name="Jane")
print(customer1.id) # '725393588906066'
print(customer2.id) # '905529381860540'
The ID is guaranteed to be unique.
By default the ID will be 12 digits long, but you can override this in
settings.py with the ID_DIGITS_LENGTH
setting.
RandomIDModel
inherits directly from models.Model
and does not interfere
with anything else, so you can use it wherever you would use models.Model
.
Forms and Admin
To integrate your model with a Django ModelForm, you will need to manually
exclude the id
field:
from django.forms import ModelForm
class CustomerForm(ModelForm):
class Meta:
model = Customer
exclude = ["id"]
Likewise if you use the Django Admin app:
from django.contrib import admin
class CustomerAdmin(admin.ModelAdmin):
exclude = ["id"]
admin.site.register(Customer, CustomerAdmin)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for django_random_id_model-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0fb592272a25dd0b920349c1e4e843b759e367cdd6a540802088e3a82c05c82 |
|
MD5 | c3735f0ce5eac37770d2546205400c0d |
|
BLAKE2b-256 | 095ba4f1aa6dc520a36c897c8065a1a07b7f5c858c8bc644499be95843e7b69e |