Skip to content

Instantly share code, notes, and snippets.

@IamMiracleAlex
Created February 27, 2023 22:56
Show Gist options
  • Save IamMiracleAlex/84f2d7df6658205ed547a7c282d984fe to your computer and use it in GitHub Desktop.
Save IamMiracleAlex/84f2d7df6658205ed547a7c282d984fe to your computer and use it in GitHub Desktop.
Generate unique id for a model field -- regenerate if id exists
import string
import random
from django.db import models
def generate_random_number(len: int):
return "".join(
random.choice(string.ascii_lowercase + string.digits) for _ in range(len)
)
def generate_unique_id(klass, field, len=6):
new_field = generate_random_number(len)
if klass.objects.filter(**{field: new_field}).exists():
return generate_unique_id(klass, field, len)
return new_field
############### USAGE #################
class MyModel(models.Model):
...
def save(self, *args, **kwargs):
if not self.pk:
self.my_field = generate_unique_id(MyModel, "my_field")
super(MyModel, self).save(*args, **kwargs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment