[Django]-Returning Hex UUID as default value for Django model charfield

7👍

You need to make it callable

default=lambda: uuid.uuid4().hex


UPDATE

As @ZulwiyozaPutra noted. Solution fails while migration, what i am totally forgot is that Django cannot serialize Lambdas.

Solution would be defining new function with desired behavior:

def hex_uuid():
    return uuid.uuid4().hex

and using this function as default argument as callable:

identifier = models.CharField(default=hex_uuid, ...)

-1👍

class Model(models.Model):

    identifier = models.CharField(max_length=32, primary_key=True, default=uuid.uuid4, editable=False)

if you use uuid.uuid4() the function will be executed on runserver, just give the signature and django will do the rest.

Leave a comment