Я хочу использовать уникальные хэши для каждой модели, а не идентификаторы.
Я использовал следующую функцию, чтобы легко использовать ее по всем разделам.
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
Я ищу отзыв, как еще я могу это сделать? Как я могу улучшить его? Что плохого и уродливого в этом отношении?