UUIDField

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from django.db.models import CharField

try:
    import uuid
except ImportError:
    from django.utils import uuid


class UUIDField(CharField) :
    
    def __init__(self, *args, **kwargs):
        kwargs['max_length'] = kwargs.get('max_length', 32 )
        CharField.__init__(self, *args, **kwargs)
    
    def pre_save(self, model_instance, add):
        if add :
            value=getattr(model_instance,self.attname)
            if not value:
                value = unicode(uuid.uuid4()).replace('-','')
            setattr(model_instance, self.attname, value)
            return value
        else:
            return super(CharField, self).pre_save(model_instance, add)

More like this

  1. UUIDField oriented django User by bwhittington 4 years ago
  2. CompressedTextField for Django 1.0+ by bwhittington 4 years ago
  3. CompressedTextField for Django 1.4+ by devhulu 3 months ago
  4. Unobtrusive comment moderation, updated for Django 1.0 by shimonrura 4 years, 3 months ago
  5. grep and delete sqlite tables by kifkif 3 years, 5 months ago

Comments

gmandx (on May 7, 2009):

Instead of: value = unicode(uuid.uuid4()).replace('-','')

It would be better: value = unicode(uuid.uuid4().hex)

Also, check this: http://code.google.com/p/django-command-extensions

They have something like this (is this better?)

#

(Forgotten your password?)