title: Generate unique hashes for django models
body: <p>I want to use unique hashes for each model rather than ids.</p>
  
  <p>I implemented the following function to use it across the board easily.</p>
  
  <pre><code>import random,hashlib
  from base64 import urlsafe_b64encode
  
  def set_unique_random_value(model_object,field_name='hash_uuid',length=5,use_sha=True,urlencode=False):
      while 1:
          uuid_number = str(random.random())[2:]
          uuid = hashlib.sha256(uuid_number).hexdigest() if use_sha else uuid_number
          uuid = uuid[:length]
          if urlencode:
              uuid = urlsafe_b64encode(uuid)[:-1]
          hash_id_dict = {field_name:uuid}
          try:
              model_object.__class__.objects.get(**hash_id_dict)
          except model_object.__class__.DoesNotExist:
              setattr(model_object,field_name,uuid)
              return
  </code></pre>
  
  <p>I'm seeking feedback, how else could I do it? How can I improve it? What is good bad and ugly about it?</p>